如果ModelState.IsValid==false
,我们应该返回View()
或View(movie)
?
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Movie movie)
{
if (ModelState.IsValid)
{
context.Movies.Add(movie);
context.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View();
}
}
或
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Movie movie)
{
if (ModelState.IsValid)
{
context.Movies.Add(movie);
context.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(movie);
}
}
答案 0 :(得分:2)
取决于您是否要清除表单。
返回模型会将用户输入的值放回到返回view()将在回发后显示空表单的表单中。
答案 1 :(得分:1)
验证失败时始终返回相同的模型(返回View(movie);)
答案 2 :(得分:1)
我喜欢做的是:
[HttpPost]
public ActionResult Create(Movie movie)
{
this.ViewData.Model = movie;
...
这样我可以返回View()
而不必担心将模型作为参数传递。您可能想要返回视图的情况不止一种,例如尝试/捕捉SaveChanges()。这也使您有机会处理OnException
方法上的错误并返回视图而不会丢失模型。