有没有办法可以获取 MVC 项目中区域的名称?
以下是我能想到的几种方法:
a) 如果我有源,我可以浏览项目文件夹结构并枚举 Areas 文件夹下的文件夹。但这并不能保证所有文件夹都代表区域,除非我还枚举了每个子文件夹下的 Controllers 和 Views 文件夹。如您所知,这种方法很糟糕。
b) 从二进制文件中,我可以枚举所有符合条件的命名空间RootNamespaceOfProject.Areas.*
。
或者,我相信还有一种更优雅的方式。ASP.NET MVC 框架中必须有一些字典来记录所有区域。
其次,在 MVC 框架中是否还有一个程序化的构造来代表一个区域?我似乎找不到一个。只有四种结构与区域相关:
1. AreaRegistration
2. AreaRegistrationContext
3. IRouteWithArea
4. AreaHelpers (an internal class)
如果有,是否有可能枚举该区域内的所有控制器?
已编辑
我刚刚注意到MVC-AreaRegistrationTypeCache.xml
在文件夹 \Windows\Microsoft.NET\Framework\v4.xx\Temporary ASP.NET Files\root\RandomlyGeneratedHash1\RandomlyGeneratedHash2\UserCache 中有这个文件被调用。
该文件夹有两个文件:
a) MVC-AreaRegistrationTypeCache.xml:该文件包含机器上所有具有区域的程序集中的所有区域的列表。
b) MVC-ControllerTypeCache.xml:此文件列出程序集区域内的控制器。
现在,唯一要找出的是是否有某种编程方式让 MVC 框架读取这些文件并告诉我二进制文件中是否存在某个区域。
我在想这AreaRegistration
门课可能是那个。进一步探索它...