C# 使用正则表达式捕获所有不工作的路由
我知道第一条路可以走大部分的路。但是,这也将捕获/Product/Edit/blabla(我正在使用ASP.NET路由调试器): 但这是错误的!为什么?如果不是最小长度为1的整数,则第一条路由不应匹配。我还需要处理未找到的coutroller和action。。。有什么想法吗C# 使用正则表达式捕获所有不工作的路由,c#,asp.net-mvc,routes,C#,Asp.net Mvc,Routes,我知道第一条路可以走大部分的路。但是,这也将捕获/Product/Edit/blabla(我正在使用ASP.NET路由调试器): 但这是错误的!为什么?如果不是最小长度为1的整数,则第一条路由不应匹配。我还需要处理未找到的coutroller和action。。。有什么想法吗 非常感谢 您误解了扩展方法 第三个参数是管线参数的一组默认值 在您的例子中,您告诉它id参数的默认值是\d{1,}您应该将表达式放在第四个参数中。请阅读以下内容: 清单3 routes.MapRoute( "Pro
非常感谢 您误解了扩展方法 第三个参数是管线参数的一组默认值
在您的例子中,您告诉它
id
参数的默认值是\d{1,}
您应该将表达式放在第四个参数中。请阅读以下内容:
清单3
routes.MapRoute(
"Product",
"Product/{productId}",
new {controller="Product", action="Details"},
new {productId = @"\d+" }
);
正则表达式\d+匹配
一个或多个整数。此约束导致产品路线匹配
以下网址:
- /产品/3
- /产品类别/8999
- /产品/苹果
- /产品
这些浏览器请求将被删除 由另一条路线处理,如果没有匹配的路线,则 找不到资源。将返回错误。编辑:已解决
[HandleError]
将(自动)将异常对象传递到Error.aspx视图,该视图显示内部消息
<customErrors mode="On" defaultRedirect="/Error/NotFound" />
将调用ErrorController方法“NotFound”,该方法显示(静态)aspx视图。符号表示什么?它应该在引号中吗?
@
符号告诉C#编译器忽略转义码。例如:@“\”
或@“\”“\”
您可以使用新的{productId=@“\d+”}定义额外的路由进行编辑。
<customErrors mode="On" defaultRedirect="/Error/NotFound" />