我必须为已经存在的网站制作虚荣网址。要求是:
到目前为止,我已经尝试了各种带路由的解决方案,这些解决方案允许我拥有 domain.com/vanity ,这很不错但营销人员不喜欢因为公司内部的不同部门。我已经尝试过路由,它将覆盖现有的操作并将它们全部视为虚荣(也是不可行的)。我有一个解决方案,以编程方式处理所请求的URL并重定向到实际存在的页面,但这不能以任何方式进行扩展。
到目前为止,我知道可以将虚荣部分视为操作的参数,这样我就可以触发路径中的默认页面(索引),但到目前为止,这并不保留结构。
TL; DR:我需要一个允许域/控制器/虚荣结构的解决方案,同时还允许域/控制器/操作
答案 0 :(得分:4)
使用AttributeRouting for MVC4,您可以完成一个有效的解决方案,直到您开始更换项目。它允许您保留现有路线,同时添加新的,自定义的路线,但影响不大。
[Route("my-vanity/is-cool/post/{id}")]
public ActionResult Index(int id)
{
}
重要的是要记住优先级,因此您编写的路线不会被现有路线覆盖/覆盖。您可以在某种程度上使用属性的属性来控制它。以下只是一个示例,它将添加的路线作为整个站点的优先级。
[Route("my-vanity/is-cool", SitePrecedence = -1)]
public ActionResult Index()
{
}
答案 1 :(得分:1)
ASP.NET WebApi2内置了对属性路由的支持。有了它,您可以以任何您喜欢的方式定义URL(而不是遵循/controller/action
模式)
http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2