想自定义路由规则让路由规则支持动态的命名空间
有大神能给我详解一下吗?
下面代码:
            
routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional },
                namespaces: new string[] { "Raccoon.OA.WebUI.Controllers"  }
            );是微软默认的路由机制
命名空间 是 Raccoon.OA.WebUI.Controllers 
现在我想要改成 让路由机制支持动态的命名空间 ,即Raccoon.OA.WebUI.Controllers .XXX
XXX是动态的该如何实现,目前跟Controller 的名字一样,例如上面的代码可以变为Raccoon.OA.WebUI.Controllers.Login

解决方案 »

  1.   

    用Area,然后RegisterArea注册能不能解决你的问题?
      

  2.   

    不能,Areas也牵扯这样的问题,命名空间就成了Raccoon.OA.WebUI.Areas.Controllers.XXXX
      

  3.   

    一般来说你这个所谓的“动态命名空间”在路由注册前应该能确定下来,不可能在程序运行时添加新的类?string [] args = new string [10];
    args[0] = "xxxx.xxxx.xxx";
    args[1] = "xxx.xxxx.xxxxx";//....routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional },
                    namespaces: args
                );
      

  4.   

    对一般会在路由规则生效前产生,说白了就是我见了N级深度的文件目录,VS生成的命名空间会根据你的文件目录走