Joh*_*lip 3 c# asp.net-mvc http-status-code-404 asp.net-mvc-3
我已经为ASP.NET MVC 3中的一般情况实现了404处理,因为没有找到控制器/视图.但是,如果用户试图访问无法找到的内容,应如何在控制器内部进行处理?例如www.foo.bar/Games/Details/randomjunk将在里面调用GamesController:
public ActionResult Details(string id) // id is 'randomjunk'
{
if(DoesGameExist(id) == false)
// Now what?
Run Code Online (Sandbox Code Playgroud)
我可以做一个,return Redirect('/Errors/Http404');但这似乎不是正确的方法.你应该抛出异常还是别的什么?
在这种情况下我们可以有一个特殊的观点,但首先我们需要一个很好的方法来应用于几个案例.
编辑:我想展示我已经拥有的友好404页面的一般情况.
你应该抛出HttpException 404:
throw new HttpException(404, "Page not Found");
Run Code Online (Sandbox Code Playgroud)
编辑:显然每个达林迪米特罗夫,我以前所拥有的甚至不起作用customErrors.正如Antonio Bakula 在另一个答案中所说,你必须这样做:
throw new HttpException(404, "Not found")
Run Code Online (Sandbox Code Playgroud)
然后customErrors将起作用.
有一个内置的辅助方法,HttpNotFound所以你可以这样做:
return HttpNotFound();
您还可以使用HttpStatusCodeResult显式返回404:
返回新的HttpStatusCodeResult(404);
HttpStatusCodeResult 当没有特定的帮助方法或类所需的代码时,它会很有用.
你也应该在你的Web.config中有这个:
<customErrors>
<error statusCode="404" redirect="~/Custom404Page.html"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)
您还可以为其他状态添加其他行,以及a defaultRedirect.
| 归档时间: |
|
| 查看次数: |
6504 次 |
| 最近记录: |