asp.net-mvc - 使用自定义路由代替/controller/action/{id}

标签 asp.net-mvc asp.net-mvc-4 routes

我必须为一个已经存在的网站制作个性化网址。要求是:

  • 现有的 Controller 是一种层次结构,不能消失或以任何方式覆盖。示例:domain.com/Dog/vanitydomain.com/Cat/vanity
  • 保留现有操作。任何现有操作都必须优先,以便该操作的页面不会被虚荣网址踩踏。
  • 考虑 future 的页面和操作,以便满足上述要求(忽略新的个性网址并执行操作/ View )

迄今为止,我已经尝试了各种路由解决方案,这些解决方案允许我拥有domain.com/vanity,这很好,但营销人员不喜欢,因为公司内有不同的部门。我尝试过路由,它将覆盖现有操作并将它们全部视为虚荣(也不可行)。我有一个解决方案,可以以编程方式处理所请求的 url,并重定向到实际存在的页面,但这无法以任何方式扩展。

到目前为止,我知道虚荣部分可以被视为操作的参数,以便我可以触发路由(索引)中的默认页面,但到目前为止,这并没有保留结构。

TL;DR:我需要一个解决方案,允许域/ Controller /虚荣结构,同时也允许域/ Controller /操作

最佳答案

使用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()
{
}

关于asp.net-mvc - 使用自定义路由代替/controller/action/{id},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24141157/

相关文章:

asp.net-mvc - 未将对象引用设置为 TempData 中对象的实例

routes - 如何使用参数和正则表达式创建 KOA 路由

c# - asp5 IConfigurationRoot 获取json数组

asp.net-mvc-4 - 缺少尾部斜杠的 MVC 错误行为的解决方法

css - 在 <td> HTML 上稍微覆盖图像

javascript - 无法获取/Nodejs 错误

php - 找不到 Symfony2.7.0 app_dev.php 路由

asp.net-mvc - 如何填充 mvc razor 局部 View

javascript - 将模型发布回包含复杂集合的 Controller

javascript - 有没有办法在 Bootstrap 模式中使用 Bootstrap 弹出窗口?