c# - 没有 Controller 的路由和 url 中的操作

标签 c# .net asp.net-mvc-3 asp.net-mvc-routing

如何配置 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/

相关文章:

C# Telnet 实现与 TCPClient,用户名/密码错误

c# - Queryable.Aggregate 不适用于空值

c# - .NET:使用 C# 列出 HTTP 流量 URL

c# - ASP.NET MVC3 如何直接从 Controller 引用 View

c# - ASP.NET MVC3 : How to return raw html to view?

c# - 无需调用即可从 lambda 获取方法名称

c# - 为什么在统一使用 Pixelperfect 相机时无法更改相机视口(viewport)矩形?

c# - 'ServiceCollection' 不包含 'AddSingleton' 的定义

c# - 合并(合并?)并简化/减少 GeoJson 的 DbGeometry 记录

Asp.Net MVC3 - FormsAuthentication,如何在浏览器关闭时使 cookie 过期?