【发布时间】:2012-03-14 21:34:29
【问题描述】:
我使用的大部分路由都是基于标准 MVC3 应用程序中定义的默认路由:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
但是,如果我的路由是“/Book/Update/1”,并且因为用户手动键入了地址而没有 1,则忽略了“1”,则会引发空参数错误。显然我的路线需要这个 1 并且不是可选的,但我不会为我的每一个操作定义自定义路线。如果我打开自定义错误,我不确定这是重定向到正确的 html 错误页面的错误类型。
问题: 我该如何处理这个错误,就像它是 404 一样?我认为这种方法没有任何问题,因为现实情况是,在路由中省略 Id 编号与未找到 404 相同。
或者我在设计路线时遗漏了什么?对我来说似乎很简单。
谢谢。
更新: 我很欣赏下面给出的答案。它们都是合理的方法。为了更清楚地说明我的问题,让我再详细说明一下。在我看来,“/Book/Update/1”的路线应该只有一个目的。更新书 1。任何其他偏差都应该失败并重定向到 404。我认为这与不存在的静态 html 页面没有任何不同。我可能会争论 .net 中不包含的功能,我只是认为可能有更简单的方法。
更新 2: 应该挖得更深一点。有一个很好的例子here. 我发现第二个答案最有帮助。
【问题讨论】:
标签: asp.net-mvc routes