是否有机会在下面的HttpPost操作方法中参数为空
本文关键字:参数 操作方法 HttpPost 机会 在下面 是否 | 更新日期: 2023-09-27 18:19:03
//
// 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
吗?
请明智地否决我的问题,并给出原因!
是的,movie可能为空,所以您应该检查它。以以下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
}
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);
}