Immer Fehler: Nicht alle Codepfade geben einen Wert zurück
Ich bin neu in mvc, C# und komme nicht weiter. Bitte beraten, wie dieses Problem zu beheben. Ich bin immer der Fehler auf "Hinzufügen". Wenn ich den Mauszeiger über die rote Wellenlinie es sagt "Nicht alle Codepfade geben einen Wert zurück"
public ActionResult Add(ShapeInputModel dto, FormCollection collection)
{
var model = new GeoRegions();
if (TryUpdateModel(model))
{
var destinationFolder = Server.MapPath("/App_Data/KML");
var postedFile = dto.Shape;
if (postedFile != null)
{
var fileName = Path.GetFileName(postedFile.FileName);
var path = Path.Combine(destinationFolder, fileName);
postedFile.SaveAs(path);
//Save to Database
Db.AddGeoRegions(model);
return RedirectToAction("Index");
}
return View();
}
}
Möglich, Duplikat der c# Rückgabe Fehlermeldung "nicht alle Codepfade geben einen Wert zurück"
InformationsquelleAutor user1382770 | 2012-05-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden :
Der Fehler passiert, weil Sie Ihre Funktionen nicht mehr zurück wenn alles
TryUpdateModel(model) = false
. So ist das hinzufügen der Zeilereturn null
oderreturn 'any other thing'
wird das problem lösen!Denken Sie daran, Wenn Sie
null
sollten Sie immer überprüfen Sie den Wert, wenn er null ist oder nicht, wenn der von der Methode zurückgegeben!InformationsquelleAutor Writwick
Gibt es keine
return
wenn das "wenn" ist nie eingetragen.Ich wie immer mit if-else verwendet wird [return] - ausgewogen zu können, sehe ich die Rückgabe-Werte (und alle Pfade haben ein return-Wert) auf einen Blick:
Natürlich ReSharper oft sagt mir, ich habe "nutzlos" else-Anweisungen 😉
Happy coding.
InformationsquelleAutor
Hinzufügen
vor der letzten Zeile
}
InformationsquelleAutor Tilak
Wird nichts zurückgegeben, wenn
(TryUpdateModel(model))
zurückfalse
. Vielleicht haben Sie gedacht, um Ihrereturn View();
außerhalb derif
?InformationsquelleAutor Andrew Barber
Den Fehler macht, was es auf dem zinn sagt; es ist ein code-Pfad, wo die Funktion wird abgeschlossen, aber nicht einen Wert zurückgeben. Eine Funktion hat einen Rückgabetyp, muss immer entweder einen Wert zurück oder wirft eine exception.
In deinem Fall, wenn
TryUpdateModel(model)
zurückfalse
, Sie haben keinen Rückgabewert.InformationsquelleAutor Adam Robinson
Gut Lesen Sie die Fehler! An einem gewissen Punkt in der Methode, die Durchführung, müssen Sie einen Wert zurückgeben oder eine exception werfen. (Ich denke, dass die Rückgabe von null ist in Ordnung in diesem Fall)
InformationsquelleAutor Richard J. Ross III
Sicher, deine erste
if (TryUpdateModel(model))
macht dein Programm nur einen Wert zurück, wenn die Bedingungtrue
; wenn es nicht ist, wird nichts zurückgegeben, die gegen die Signatur der Methode.InformationsquelleAutor Icarus
Haben Sie
Also, was wird zurückgegeben, wenn
TryUpdateModel
ist, nicht wahr?Ihre Methode muss wieder ein
ActionResult
auch wenn dieif
Aussage ist falsch.InformationsquelleAutor Kirk Broadhurst
Nur mit einem kurzen Blick auf deinen code kann ich sehen, dass Sie Ihren return-Befehl(return View() in der "if" - Anweisung block. Nun, wenn der "Wenn" Bedingung war, zu scheitern, es gibt keine return-Anweisung außerhalb es Geltungsbereichs. Die einfachste Möglichkeit wäre,
InformationsquelleAutor Abhi.Net
Sind Sie wieder Wert innerhalb der "wenn ()" - Bedingung. Was angenommen wird, wenn if-Bedingung nicht?? das Programm wird nicht Wert zurückgeben. So, zurückgegeben default-Wert außerhalb der if-Bedingung, es kann in else-Bedingung.
Versuchen Sie es. Und wenn ur-problem gelöst ist, dann markiere als beantwortet. So, dass es für andere nützlich.
InformationsquelleAutor Syed Yunus