ASP.NET MVC Default route?

Deadly 提交于 2019-11-28 09:04:51

Make sure the Default route is at the BOTTOM of your listed route table. Order matters when it comes to ASP.NET MVC Routing tables.

The correct ordering is your 'most specific' route to your least specific route.

Jirapong

Actually, George is right. MVC Routing respect ordering route. Your last route must be generic as possible, and your previous route must be specific as possible.

In your case, both are generic. You should

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

and then

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

so, you give specificity to both routes.

Phil Haack released a route debugging tool that can be invaluable in gaining an understanding of problems like this.

With this tool you can view how your MVC application parses a URL and matches it to your RouteTable.

When you don't provide the route name or the action is determined through a HTTP request it will look in order from the order they were added. The first time it finds one that matches, it stops. So what's probably happening is it's matching one previous to the one you've added.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!