asp.net mvc 中一般是
controller/action/參數(shù)
的位址形式
但是大多數(shù)時候,網(wǎng)站的位址不是這樣的路徑
如:
xxxx.com/asp.net/
xxxx.com/asp.net/mvc/
xxxx.com/asp.net/webform/
xxxx.com/asp.net/ado.net/
xxxx.com/javascript/
xxxx.com/javascript/jquery/
#
xxxx.com/javascript/angularjs/
#
xxxx.com/javascript/jichu/
xxxx.com/jiaoyu/
#這時候,位址就不是 controller/action/參數(shù) 的形式
不知道 asp.net mvc 中如何對應(yīng)這種路徑? ? ?
這個要看你的路由規(guī)則如何定義以及路由的定義順序。
假如這個請求進(jìn)入到ASP.NET管道模型中,它就會去到預(yù)先定義的路由中去執(zhí)行匹配,遇到第一個匹配的路由,就直接將這個路由結(jié)果返回了。
例如預(yù)設(shè)的路由的第一個路由規(guī)則是:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Admin", action = "Login", id = UrlParameter.Optional }
);
xxxx.com/asp.net/ 將符合這條路由規(guī)則,controller="asp.net",action="Login";
xxxx.com/asp.net/mvc/ 也會符合這條路由規(guī)則,controller="asp.net",action="mvc";
假如說你另外定義了一條路由規(guī)則,而且這條路由規(guī)則在剛才那條路由規(guī)則前面:
routes.MapRoute(
name: "asp.net",
url: "asp.net/{controller}/{action}/{id}",
defaults: new { controller = "User", action = "Link", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Admin", action = "Login", id = UrlParameter.Optional }
);
xxxx.com/asp.net/ 將符合這條路由規(guī)則,controller="User",action="Link";
但xxxx.com/cast/將不匹配第一條路由規(guī)則,而繼續(xù)用第二條路由規(guī)則匹配,這時就會匹配成功,controller="cast", action="Login"
建議可以看下《精通ASP.NET MVC3框架》這本書,第11章路由規(guī)則有此問題的分析介紹。