Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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/2/.net/25.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 具有固定前缀的MVC路由_Asp.net Mvc_Routes - Fatal编程技术网

Asp.net mvc 具有固定前缀的MVC路由

Asp.net mvc 具有固定前缀的MVC路由,asp.net-mvc,routes,Asp.net Mvc,Routes,好吧,我找遍了所有我能想到的地方,想找到这个简单问题的答案,但我没有找到。我有一个简单的路由,URL中有一个常量 routes.MapRoute( name: "TagNamed", url: "tag/{name}/X({mytag}", defaults: new { controller = "Tag", action = "Index" } ); routes.

好吧,我找遍了所有我能想到的地方,想找到这个简单问题的答案,但我没有找到。我有一个简单的路由,URL中有一个常量

        routes.MapRoute(
            name: "TagNamed",
            url: "tag/{name}/X({mytag}",
            defaults: new { controller = "Tag", action = "Index" }
            );
        routes.MapRoute(
            name: "Tag",
            url: "tag/X({mytag}",
            defaults: new { controller = "Tag", action = "Index" }
            );
到目前为止,这对我来说还不错。我可以有一个像这样的url

http://localhost:64899/tag/X(foo,Q(bar))
我到了我需要去的地方。但一旦URL中出现另一个“X”(),我就会收到一个404错误。这会失败,例如:

http://localhost:64899/tag/X(foo,X(bar))

对我有什么建议吗?

虽然可以使用样板文本作为路线的一部分,但这似乎不是最佳做法。我修改的路线如下:

        routes.MapRoute(
            name: "Tag",
            url: "tag/{tag}",
            defaults: new { controller = "Tag", action = "Index" },
            constraints: new { tag = @"X\(.+" }
            );
我真正需要使用的是一个约束。通过这个小小的改变,404问题消失了