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"]=

更多:

路由配置4-伪静态

posted @ 2017-07-21 10:11  天马3798  阅读(1115)  评论(0编辑  收藏  举报