首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义路由而不是/控制器/操作/{id}

使用自定义路由而不是/控制器/操作/{id}
EN

Stack Overflow用户
提问于 2014-06-10 12:36:15
回答 2查看 1.2K关注 0票数 2

我必须为一个已经存在的网站做虚荣心网址。所需经费如下:

  • 现有的控制器是一种层次结构,不能消失或以任何方式被覆盖。例如: domain.com/Dog/vanity和domain.com/Cat/vanity。
  • 保持现有的行动。任何现有的操作都必须优先,这样该操作的页面就不会被虚荣url所践踏。
  • 考虑到未来的页面和操作,以满足上述要求(忽略一个新的虚荣心url并执行操作/视图)

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

到目前为止,我知道虚荣心部分可以作为操作的一个参数来处理,这样我就可以在路由(Index)中触发默认页面,但到目前为止,这并不能保留结构。

博士:我需要一个允许域/控制器/虚荣心结构的解决方案,同时也允许域/控制器/动作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-11 15:12:57

使用AttributeRouting for MVC4,您可以完成一个工作解决方案,直到您提升替换项目。它将允许您保留现有的路线,同时添加新的,定制的影响很小。

代码语言:javascript
运行
复制
[Route("my-vanity/is-cool/post/{id}")]
public ActionResult Index(int id)
{
}

重要的是要记住优先级,这样您就可以编写没有覆盖/被现有路由覆盖的路由。您可以在某种程度上使用属性上的属性来指导这一点。下面只是一个例子,将添加的路线放在最后的优先对整个网站。

代码语言:javascript
运行
复制
[Route("my-vanity/is-cool", SitePrecedence = -1)]
public ActionResult Index()
{
}
票数 4
EN

Stack Overflow用户

发布于 2014-06-11 15:01:34

ASP.NET WebApi2内置了对属性路由的支持。使用它,您可以以任何方式定义URL(而不是遵循/controller/action模式)。

http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24141157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档