对于一个场景,我有一个ASP.NET MVC应用程序,其URL如下所示:
http://example.com/Customer/List
http://example.com/Customer/List/Page/2
http://example.com/Customer/List
http://example.com/Customer/View/8372
http://example.com/Customer/Search/foo/Page/5
Run Code Online (Sandbox Code Playgroud)
这些URL通过以下路由实现 Global.asax.cs
routes.MapRoute(
"CustomerSearch"
, "Customer/Search/{query}/Page/{page}"
, new { controller = "Customer", action = "Search" }
);
routes.MapRoute(
"CustomerGeneric"
, "Customer/{action}/{id}/Page/{page}"
, new { controller = "Customer" }
);
//-- Default Route
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Customer", action = "Index", id = "" }
);
Run Code Online (Sandbox Code Playgroud)
这些都进展顺利,直到新的要求到达并希望从URL中删除关键字"客户",以使URL看起来像:
http://example.com/List
http://example.com/List/Page/2
http://example.com/List
http://example.com/View/8372
http://example.com/Search/foo/Page/5
Run Code Online (Sandbox Code Playgroud)
编辑:更正了示例链接,感谢@haacked.
我尝试添加new MapRoutes以{action}仅采用并将默认控制器设置为Customer.例如/
routes.MapRoute(
"CustomerFoo"
, "{action}"
, new { controller = "Customer", action = …Run Code Online (Sandbox Code Playgroud)