使用 asp.net MVC 以编程方式重定向到 404 页面

Posted

技术标签:

【中文标题】使用 asp.net MVC 以编程方式重定向到 404 页面【英文标题】:Redirect to 404 page programmatically using asp.net MVC 【发布时间】:2012-05-28 23:30:26 【问题描述】:

我创建了一个 Asp.net MVC 应用程序。现在需要 404 处理。

已更新 global.asax 并根据状态码显示 404 页面。还在 web.config 中添加了 customErrors 属性。它工作正常。

现在我想在任何不符合我们要求的情况下以编程方式重定向到 404。

if(!valid) 

    return RedirectToAction("Index", "Page404");

它工作正常,但有两种状态,一种是 301,然后是 404。那么如何防止 301?我只需要 404。

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

简单地从你的行动中返回:

return HttpNotFound();

【讨论】:

这是正确答案。如果您在为结果提供服务的同时查询数据库,并发现具有用户指定 ID 的对象不存在,您需要以编程方式将用户重定向到 404 页面(或类似操作)。【参考方案2】:

在您的web.config 中,添加:

<customErrors mode="On" >
       <error statusCode="404" redirect="/404.shtml" />
</customErrors>

当找不到请求的资源时,这将重定向到 404.shtml 页面。

注意:在这种情况下无需以编程方式重定向用户。


编辑: 我真的建议:

if (Context.Response.StatusCode == 404) 
  // handle this

【讨论】:

【参考方案3】:

只需在状态码中抛出一个 404:

Response.StatusCode = (int)System.Net.HttpStatusCode.NotFound

【讨论】:

以上是关于使用 asp.net MVC 以编程方式重定向到 404 页面的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC我想重定向到另一个将我的模型传递给它的动作,以获得正确的URL

在 ASP.Net MVC3 中重定向到不影响 URL 的区域

如何重定向到 $.AJAX 上的视图完成 - asp.net mvc 3

ASP.Net MVC 3 将未经授权的用户重定向到 loginUrl

MVC-3 ASP.NET 共享视图-重定向-Razor

如何在 ASP.NET MVC 中重定向到动态登录 URL