首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeRouting中的路由模糊性

AttributeRouting中的路由模糊性
EN

Stack Overflow用户
提问于 2012-06-01 19:39:56
回答 2查看 680关注 0票数 1

我尝试在两种不同的操作方法上创建两种不同的路由,如下所示:

代码语言:javascript
复制
[GET("/project/create")]
public ActionResult Create()

[GET("/project/{projectId}")]
public ActionResult Details(int projectId)

问题是,当我导航到/project/create时,我被路由到详细信息页面,这会失败,因为projectId不是一个整数。

我意识到我可以将细节路由更改为类似于/project/{projectId}/details的东西,但我希望它以另一种方式工作。

另一种解决方案是将projectId设置为字符串,如果projectId ==为" Create“,则在内部重定向到create操作,但这会让人感觉很糟糕。

为此,我使用了AttributeRouting

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-01 19:46:08

如果您使用的是v2.2或更高版本的属性路由,您可以简单地在项目id上指定一个constraint

代码语言:javascript
复制
[GET("/project/{projectId:int}")]

如果是v2.2之前的版本,您可以使用正则表达式来达到同样的效果:

代码语言:javascript
复制
[GET("/project/{projectId(^[\\d]+$)}")]

然而,在更一般的情况下,您可以通过设置属性的Precedence属性来指定控制器中的路由的precedence

代码语言:javascript
复制
[GET("/project/create", Precedence = 1)]
public ActionResult Create()

[GET("/project/{projectId}", Precedence = 2)]
public ActionResult Details(int projectId)
票数 3
EN

Stack Overflow用户

发布于 2012-06-02 00:55:53

操作的顺序应自动设置优先级。因此,如果您的创建操作在详细信息之前,那么您应该没有问题。Precedence属性最初是为了帮助那些在每个类中具有路由的分部类的用户而开发的。

如果你不能对你的路线进行适当的排序,或者需要进一步的控制,那么Rich的答案有很好的提示。

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

https://stackoverflow.com/questions/10849569

复制
相关文章

相似问题

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