我使用asp.net MVC 4构建了一个Web应用程序。 我想拥有以下3种类型的路线:
- / action
- /动作/ ID
- / ID / ID2
醇>
在global.asax中,我更改了路由,如下所示:
routes.MapRoute(
name: "Without Action",
url: "{id}/{id2}",
defaults: new { controller = "Home", action = "City_Category" },
namespaces: new[] { "Namespace.Controllers" }
);
routes.MapRoute(
name: "Without Controller",
url: "{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "Namespace.Controllers" }
);
但是当我尝试{action} / {id}时,它会转到global.asax中定义的第一个路径。仅当网址为{action}或{id} / {id2}时才有效。
如何才能使所有3条路线都工作?
谢谢!
答案 0 :(得分:0)
如果{id}
和{id2}
始终为数字,则可以向路线添加约束,以便只有当这些值为数字时才会启用:
routes.MapRoute(
name: "Without Action",
url: "{id}/{id2}",
defaults: new { controller = "Home", action = "City_Category" },
new { id = @"\d+", id2 = @"\d+" }
namespaces: new[] { "Namespace.Controllers" }
);
答案 1 :(得分:0)
另一个想法是使用http://attributerouting.net/,你可以按属性定义路由,这是一个非常容易定义的路由,特别是如果你最终有很多复杂的路由。我有大约30个路由定义和很多注释,每个动作的URL如何。我可以使用这些属性删除所有注释和路由定义。