在网址中没有控制器和操作的路由

Jak*_*ade 3 .net c# asp.net-mvc-routing asp.net-mvc-3

如何配置ASP.NET MVC 3路由,以便它不需要URL中的控制器和操作?

我有这个显示项目"abc123"的详细信息,配置默认路由设置:

mysite.com/Home/Details/abc123
Run Code Online (Sandbox Code Playgroud)

值"abc123"是一个唯一值,Home控制器用它来查找数据库中的正确项.

但我宁愿让这些超短网址:

mysite.com/abc123
Run Code Online (Sandbox Code Playgroud)

该网站还将拥有极少数额外的控制器,例如"关于"和"联系".我假设我必须特别配置它们,因此默认控制器不会开始查找ID为"About"或"Contact"的项目的详细信息.我怎么做?

更新:

这是我的路线最终看起来像:

routes.MapRoute("About", "About", New With {.controller = "About", .action = "Index"})
routes.MapRoute("ID", "{id}", New With {.controller = "Home", .action = "Details"})
routes.MapRoute("Default", "", New With {.controller = "Home", .action = "Index"})
Run Code Online (Sandbox Code Playgroud)

:)

Can*_*cer 6

尝试这样的事情:

routes.MapRoute("Site"
              , "Site/{controller}/{action}"
                , new { controller = "Home", action = "Index"});

routes.MapRoute("Id"
              , "{id}"
                , new { controller = "Home", action = "Details"});
Run Code Online (Sandbox Code Playgroud)

第一个路由应确保您可以将/ Site/About和/ Site/Contact分别映射到AboutController和ContactController.首先映射它是很重要的.

第二个路由将确保/ abc123映射到ID为"abc123"的详细信息操作