Asp.net mvc 具有固定前缀的MVC路由
好吧,我找遍了所有我能想到的地方,想找到这个简单问题的答案,但我没有找到。我有一个简单的路由,URL中有一个常量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.
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问题消失了