Asp.net mvc 如何在运行时找出asp.net mvc中控制器所属的区域?

Asp.net mvc 如何在运行时找出asp.net mvc中控制器所属的区域?,asp.net-mvc,controller,enumeration,asp.net-mvc-areas,system.reflection,Asp.net Mvc,Controller,Enumeration,Asp.net Mvc Areas,System.reflection,因为这东西是全新的,我想不出有什么好的参考资料 我想使用反射枚举应用程序中的所有控制器。使用反射并不难。但自从该地区成立以来。如何知道特定控制器属于哪个区域(如果有) 也许我做错了,也许我需要列举整个区域。。。那我该怎么做呢?如果控制器不属于任何区域怎么办?有默认的吗 有很多很好的文章深入解释了控制器和视图。如果有人能为我指出类似的区域,我将不胜感激。您必须更改控制器所在的名称空间以检测区域,或者从(RouteTable.Routes)循环中获取路由数据,并尝试匹配数据标记,即您在{contro

因为这东西是全新的,我想不出有什么好的参考资料

我想使用反射枚举应用程序中的所有控制器。使用反射并不难。但自从该地区成立以来。如何知道特定控制器属于哪个区域(如果有)

也许我做错了,也许我需要列举整个区域。。。那我该怎么做呢?如果控制器不属于任何区域怎么办?有默认的吗


有很多很好的文章深入解释了控制器和视图。如果有人能为我指出类似的区域,我将不胜感激。

您必须更改控制器所在的名称空间以检测区域,或者从(RouteTable.Routes)循环中获取路由数据,并尝试匹配数据标记,即您在{controller}中放置的标记和/或url信息:

 foreach (RouteBase routeBase in RouteTable.Routes)
 {
      Route route = routeBase as Route;

      var routeUrl = route.Url;                
 }
以下是获取路线信息的方法:

 foreach (RouteBase routeBase in RouteTable.Routes)
 {
      Route route = routeBase as Route;

      var routeUrl = route.Url;                
 }
Phil Haacks Route Debugger可能会帮助您:

关于以下方面的MSDN文章:


听起来很棘手,祝你好运

我能问你为什么需要知道这个地区吗?如果您是以RESTful方式编写应用程序,那么该区域是否重要?你需要这个的具体原因是什么?我问这个问题是因为可能有另一种和/或更好的方法来完成你想要完成的任务。我正在编写一个用户管理器,因此论坛/主页/编辑需要拥有不同于主页/编辑的权限。两个控制器显然具有相同的名称,但一个位于根目录,另一个位于论坛区域内。不过我以前想过这两种方法两者都不够优雅,因此我把问题贴在这里。使用名称空间很好,约定优于配置,但它相当脆弱。使用RouteTable可能会起作用,但对我来说似乎有点黑客。无论哪种方式,我都会继续玩下去,然后汇报:)