首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET MVC默认路由?

ASP.NET MVC默认路由?
EN

Stack Overflow用户
提问于 2009-06-10 00:45:16
回答 3查看 60.6K关注 0票数 19

我创建了一个新的ASP.NET MVC项目,并实现了一个站点授权过滤器。

当我将路由映射到角色对时,我向路由传递了一个{controller}/{action} = "SomeRole“默认值。

如果我遍历完整的url (http://localhost/somecontroller/someaction)并指定完整的路由,它就能完美地工作

代码语言:javascript
复制
MapRoute("SomeAction", "somecontroller/someaction",
 new { controller = "SomeController", action = "SomeAction", role = "SomeRole");

问题是当有人访问http://thesiteaddress.com时,必须有一个调用/home/index而不是/的默认路由,如果我指定

代码语言:javascript
复制
MapRoute("Default", new { controller="somecontroller",action="action" });

然后,我丢失了前一个MapRoute中的role="SomeRole"

我该如何解决这个问题呢?

EN

回答 3

Stack Overflow用户

发布于 2009-06-24 03:18:17

实际上,是George is right。MVC路由尊重排序路由。您的最后一条路由必须尽可能是通用的,而您之前的路由必须尽可能具体。

在您的例子中,两者都是通用的。你应该

代码语言:javascript
复制
MapRoute("SomeAction", "Post/{action}", new {controller = "Post", role = "User");

然后

代码语言:javascript
复制
MapRoute("Default", new {controller="Home", action="Index", role = "Anonymous"});

因此,您指定了这两条路径的特异性。

票数 18
EN

Stack Overflow用户

发布于 2009-06-10 12:18:32

Phil Haack released,这是一个路由调试工具,对于理解这样的问题非常有价值。

使用此工具,您可以查看MVC应用程序如何解析URL并将其与您的RouteTable进行匹配。

票数 13
EN

Stack Overflow用户

发布于 2009-06-10 01:08:50

如果您没有提供路由名称,或者操作是通过HTTP请求确定的,那么它将按照添加它们的顺序进行查找。当它第一次找到一个匹配项时,它会停止。因此,可能发生的情况是,它将之前的一个匹配到您添加的那个。

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

https://stackoverflow.com/questions/973205

复制
相关文章

相似问题

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