使用 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