我是mvc C#的新手并且被卡住了。请告知如何解决这个问题。我在Add上收到错误。当我将鼠标悬停在红色波浪形线上时,它表示"并非所有代码路径都返回一个值"
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();
}
}
答案 0 :(得分:8)
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();
}
return null; // you can change the null to anything else also.
}
发生错误是因为如果TryUpdateModel(model) = false
您的函数没有返回任何内容。因此,添加行return null
或return 'any other thing'
可以解决问题!
答案 1 :(得分:3)
如果从未输入“if”,则没有return
。
我喜欢始终保持if-else的[与return]平衡使用,我可以一目了然地看到返回值(以及所有路径都有返回值):
if (TryUpdateModel(model))
{
...
if (postedFile != null)
{
...
return RedirectToAction("Index");
} else {
return View();
}
} else {
return View(); // or null/whatever is appropriate
}
当然,ReSharper经常告诉我,我有“无用的”其他陈述; - )
快乐的编码。
答案 2 :(得分:1)
添加
return null;
在最后一行}
答案 3 :(得分:0)
如果(TryUpdateModel(model))
返回false
,则不会返回任何内容。也许你打算让return View();
超出if
?
答案 4 :(得分:0)
这个错误就像它在锡上说的那样;这是一个代码路径,函数将完成,但不会返回值。具有返回类型的函数必须始终返回值或抛出异常。
在您的情况下,如果TryUpdateModel(model)
返回false
,则您没有返回值。
答案 5 :(得分:0)
好好阅读错误!在方法执行的某个时刻,您必须返回一个值,或抛出异常。 (我认为在这种情况下返回null是有序的)
答案 6 :(得分:0)
当然,您的初始if (TryUpdateModel(model))
会使您的例程仅在条件为true
时返回值;如果不是,则不会返回任何违反方法签名的内容。
答案 7 :(得分:0)
你有
if (TryUpdateModel(model))
{
// lots of stuff
return View();
}
那么如果TryUpdateModel
不正确,会返回什么?
即使ActionResult
语句为false,您的方法也必须返回if
。
答案 8 :(得分:0)
快速查看代码我可以看到你有返回命令(在“if”语句块中返回View()。现在如果“If”条件失败,那么它之外没有return语句范围。最简单的方法是
}
return View();
}
return null; // Depends upon your code though. you might want to return something else
}
答案 9 :(得分:0)
您在“if()”条件中返回值。如果条件失败,会发生什么?该计划将不会返回价值。因此,如果条件,则返回任何默认值,它可能处于其他条件。
public ActionResult Add(ShapeInputModel dto, FormCollection collection)
{
var model = new GeoRegions();
if (TryUpdateModel(model))
{
....
....
}
return default_value;//it may be in else condition also.
}
试试吧。如果您的问题得到解决,请标记为已回答。这对其他人有用。