ASP.NETMVC默认路由是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (70)

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

当我将路线映射到路线时{controller}/{action},我会将一个角色=“SomeRole”默认路径传递给路线。

如果我浏览完整的url(http://localhost/somecontroller/someaction)并且指定了完整的路线,它就可以很好地工作

MapRoute("SomeAction", "somecontroller/someaction",
 new { controller = "SomeController", action = "SomeAction", role = "SomeRole");

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

MapRoute("Default", new { controller="somecontroller",action="action" });

然后我失去了role="SomeRole"以前的MapRoute

我怎么解决这个问题?

提问于
用户回答回答于

。MVC Routing尊重order路线。最后一条路线必须尽可能通用,并且以前的路线必须尽可能具体。

在你的情况下,两者都是通用的。你应该

MapRoute("SomeAction", "Post/{action}", new {controller = "Post", role = "User");

然后

MapRoute("Default", new {controller="Home", action="Index", role = "Anonymous"});

所以,你给出了这两条路线的特异性。

用户回答回答于

确保Default路线位于列出的路线表的底部。当谈到ASP.NET MVC路由表时,顺序很重要。

正确的顺序是最具体路线的“最具体”路线。

扫码关注云+社区

领取腾讯云代金券