C# 在下面的HttpPost操作方法中,参数是否有可能为null?
据我所知,HttpPost只能通过在相应的视图中发布填充的表单来访问。我的困惑是,我是否需要在HttpPost中检查C# 在下面的HttpPost操作方法中,参数是否有可能为null?,c#,asp.net-mvc,C#,Asp.net Mvc,据我所知,HttpPost只能通过在相应的视图中发布填充的表单来访问。我的困惑是,我是否需要在HttpPost中检查movie的空值,因为我认为movie不可能是null。你觉得怎么样?是否有可能电影为空 请明智地否决我的问题,给出理由 ModelState.IsValid仅告诉您是否已将任何模型错误添加到ModelState,而不是模型是否包含空引用 // // GET: /Movies/Edit/5 public ActionResult Edit(int id = 0) { Mo
movie
的空值,因为我认为movie
不可能是null
。你觉得怎么样?是否有可能电影
为空
请明智地否决我的问题,给出理由 ModelState.IsValid仅告诉您是否已将任何模型错误添加到ModelState,而不是模型是否包含空引用
//
// 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);
}
是的,电影可能为空,所以您应该检查它。以以下AJAX调用为例:
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);
}
在这种情况下,Movie将为null,您应该通过检查null在代码中说明这一点:
$.ajax({
type: "POST",
url: "Home/Edit",
async: false,
data: {},
success: function (data, text) {
// do something
},
error: function (request, status, error) {
//do something
}
});
您没有将任何空签入yet@Sayse:它没有回答我的问题。您最初的问题是,为什么在没有Ajax调用的正常场景中,该方法不检查null(或类似的内容)(我还没有确切地了解Ajax),是否仍有必要检查
电影
的空值?如果为空,其余代码将如何运行?它会崩溃吗?它会关闭整个应用程序吗?在web应用程序中,仅仅因为您的UI没有公开,并不意味着有人不能使用fiddler、浏览器开发工具或直接ajax调用来调用您的方法。如果这些方法损坏了数据或使整个系统崩溃,如果它们是恶意的,可能会有人给您带来许多问题。@artificialstuptity and
public ActionResult Edit(Movie movie)
{
if (movie == null)
{
// Return a different view or perform a redirect
}
//... The rest of your code
}