2

我正在尝试从 asp.net 网站示例应用程序MVCMovieApplication学习 ASP.Net MVC 。此应用程序是为 MVC3 编写的。我被困在下面的部分。有人可以帮我解决这个问题吗?

public ActionResult Edit(int id = 0)
{
    Movie movie = db.Movies.Find(id);
    if (movie == null)
    {
        return HttpNotFound();
    }
    return View(movie);
}

错误:

The Name 'HTTPNotFound' does not exist in the current context.
4

1 回答 1

3

HttpNotFound方法和相关的HttpStatusCodeResult及其继承者 HttpNotFoundResult是 MVC3 中添加的新特性。这就是为什么它在 MVC2 中不起作用的原因。

所以要么你升级到 MVC3(甚至 MVC4 在本周作为 RTM 发布)

或者您可以创建自己ActionResult的返回 404 状态代码:

public class HttpNotFoundResult : ActionResult
{
    private const int NotFoundCode = 404;

    public override void ExecuteResult(ControllerContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException("context");
        }

        context.HttpContext.Response.StatusCode = NotFoundCode;
    }
}

而你在你的行动方法中:

public ActionResult Edit(int id = 0)
{
    Movie movie = db.Movies.Find(id);
    if (movie == null)
    {
        return new HttpNotFoundResult();
    }
    return View(movie);
}
于 2012-08-17T11:53:42.917 回答