Asp.Net Mvc控制器重名问题整理
一、关于控制器重名问题
1.没有区域的时候控制器不能重名
2.有区域的时候,外部控制器和区域中的控制器重名,访问外部控制器异常,访问区域控制器正常。
3.区域和区域之间的控制器重名,互不影响。区域从某种程度上,起到一层命名空间的作用
二、解决方案-为路由指定命名空间
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "MVC_Base1.Controllers" } //指定控制器命名空间 );
三、解决方案,使用区域,如果外部控制器和区域控制器有重名,则为外部路由指定命名空间。
注:获取区域名称需要在路由参数的DataTokens中获取
RouteData.DataTokens["area"]= above
RouteData.Values["area"]=
RouteData.Values["controller"]= Home
RouteData.DataTokens["controller"]=
RouteData.Values["action"]= Index
RouteData.DataTokens["action"]=
更多: