gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:37:20 32 4
gpt4 key购买 nike

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

  • 现有的 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com