如何配置 ASP.NET MVC 3 路由,使其不需要 url 中的 Controller 和操作?
我用这个来显示项目“abc123”的详细信息,配置了默认路由设置:
mysite.com/Home/Details/abc123
值“abc123”是 Home Controller 用来在数据库中查找正确项目的唯一值。
但我更愿意使用这些超短网址:
mysite.com/abc123
该站点还将有很少的其他 Controller ,例如“关于”和“联系方式”。我想我也必须专门配置这些,所以默认 Controller 不会开始寻找 ID 为“关于”或“联系”的项目的详细信息。我该怎么做?
更新:
这是我的路线最终的样子:
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"})
:)
最佳答案
尝试这样的事情:
routes.MapRoute("Site"
, "Site/{controller}/{action}"
, new { controller = "Home", action = "Index"});
routes.MapRoute("Id"
, "{id}"
, new { controller = "Home", action = "Details"});
第一个路由应该确保你可以将/Site/About 和/Site/Contact 分别映射到 AboutController 和 ContactController。重要的是首先映射它。
第二条路线将确保/abc123 被映射到 ID 为“abc123”的详细信息操作
关于c# - 没有 Controller 的路由和 url 中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5260591/