0
//
// 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 只能通过在相应视图中发布填充表单来访问。我的困惑是我是否需要检查movieHttpPost 的空值,因为我认为movie没有机会null。你怎么看呢?有没有movie机会null

请通过给出原因明智地否决我的问题!

4

2 回答 2

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
}
于 2013-06-18T13:35:13.120 回答
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);
}
于 2013-06-18T13:31:44.307 回答