//
// GET: /Movies/Edit/5
public ActionResult Edit(int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
//
// POST: /Movies/Edit/5
[HttpPost]
public ActionResult Edit(Movie movie)
{
if (ModelState.IsValid)
{
db.Entry(movie).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movie);
}
根据我的理解,只有通过在相应视图中发布填充的表单才能访问HttpPost。我的困惑在于我是否需要检查HttpPost中movie
的无效性,因为我认为movie
没有机会成为null
。你怎么看呢? movie
null
是否有{{1}}?
请明智地通过给出理由来推翻我的问题!
答案 0 :(得分:1)
是电影可能为空,所以你应该检查一下。以下面的AJAX调用为例:
$.ajax({
type: "POST",
url: "Home/Edit",
async: false,
data: {},
success: function (data, text) {
// do something
},
error: function (request, status, error) {
//do something
}
});
在这种情况下,Movie将为null,您应该通过检查null来解释代码:
public ActionResult Edit(Movie movie)
{
if (movie == null)
{
// Return a different view or perform a redirect
}
//... The rest of your code
}
答案 1 :(得分:0)
ModelState.IsValid仅告诉您是否已将任何模型错误添加到ModelState,而不是模型包含NULL引用。
public ActionResult Edit(Movie movie)
{
if(movie == null)
{
// or what else you what...
return View();
}
if (ModelState.IsValid)
{
db.Entry(movie).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movie);
}