gre*_*emo 0 c# asp.net-mvc routes
我知道第一条路线将占据大部分路径.但是,这也会捕获/ Product/Edit/blablabla(我正在使用ASP.NET路由调试器):
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = @"\d{1,}" }
);
routes.MapRoute(
"Catch All",
"{*path}",
new { controller = "Error", action = "NotFound" }
);
}
Run Code Online (Sandbox Code Playgroud)
但这是错的!为什么?如果不是长度为1的整数,则第一条路线不匹配.我还需要处理未找到的coutroller和动作......任何想法?
非常感谢!
您应该将表达式放在第四个参数中.读这个:
http://www.asp.net/LEARN/MVC/tutorial-24-cs.aspx
清单3.
routes.MapRoute(
"Product",
"Product/{productId}",
new {controller="Product", action="Details"},
new {productId = @"\d+" }
);
Run Code Online (Sandbox Code Playgroud)
正则表达式\ d +匹配一个或多个整数.此约束导致Product路由匹配以下URL:
但不是以下网址:
这些浏览器请求将由另一个路由处理,或者,如果没有匹配的路由,则无法找到该资源.将返回错误.
| 归档时间: |
|
| 查看次数: |
2950 次 |
| 最近记录: |