我在我的 ASP.NET MVC2 项目中设置了默认路由,并希望为我的其他一些控制器添加/修改它。假设我有一个带有 Details 操作的 Customer 控制器,该控制器期望和“id”参数(int)。例如:
//
// GET: /Customer/Details/5
public ActionResult Details(int id)
{
//...
}
如果用户输入“非数字”,如何添加将返回 404 的路由?我尝试添加以下“之前”默认路由,但它不起作用......
routes.MapRoute(
"DefaultDigitsId", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index" },
new { id = @"\d+" }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
注意,如果可能的话,我想保留默认路由......我所有的控制器都使用“详细信息”和“编辑”,其中需要“id”(int)参数。我想知道是否有办法完成这无需指定多个路由(即通用的)......当然,目标是如果用户输入类似“/Customer/Details/apple”之类的内容,它不会引发错误,而是将它们带到错误页面.. .
还有这篇文章提示设置默认值,但我不知道该怎么做......