Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 忽略具有路由约束的请求_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 忽略具有路由约束的请求

Asp.net mvc 忽略具有路由约束的请求,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我在Global.asax.cs routes.MapRoute( "Custom", "party/get/{a}~{b}", new { controller = "party", action = "get" }, new { a = @"\d+", b = @"\d+" } ); routes.MapRoute( "Default", "{controller}/{act

我在
Global.asax.cs

routes.MapRoute(
        "Custom",
        "party/get/{a}~{b}",          
        new { controller = "party", action = "get" },
        new { a = @"\d+", b = @"\d+" }
);

routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Party", action = "Index", id = UrlParameter.Optional }
);
如果请求是
http://localhost:58684/party/get/37~12
然后它将与第一条路线匹配,
a
b
的值分别为
37和
12

如果请求是
http://localhost:58684/party/get/37~-12
则第一个路由与此请求不匹配,因为
-12
与约束
@“\d+”
不匹配,并且默认路由与请求匹配(我不希望此行为


如果由于某些限制,一个请求没有与一个路由匹配,我如何避免与该请求匹配的其他后续路由?我不想为以下路由设置任何约束。

您可以使用routes.IgnoreRoute

一个例子:

routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });

您不能告诉路由引擎“如果某个路由与此路由的一部分匹配,而不是全部匹配,则忽略该路由”。但是,您可以添加另一个路由来捕获错误请求,并对其执行其他操作—显示错误页面或重定向到其他操作

如果您直接在所需的路由之后添加此选项,它将捕获不需要的请求

routes.MapRoute(
    "BadPartyValue",
    "party/get/{badValue}",          
    new { controller = "party", action = "BadValue" }
);