繁体   English   中英

ASP.NET MVC4所有领域的列表

[英]ASP.NET MVC4 List of all areas

我有一个ASP.NET MVC4应用程序,我在其中创建多个区域,有没有一种方法可以通过编程方式找出存在的区域数量及其名称。

AreaRegistration.RegisterAllAreas(); 使用DataTokens["area"]注册每个区域路径,其中值是区域的名称。

因此,您可以从RouteTable获取注册的区域名称

var areaNames = RouteTable.Routes.OfType<Route>()
    .Where(d => d.DataTokens != null && d.DataTokens.ContainsKey("area"))
    .Select(r => r.DataTokens["area"]).ToArray();

如果您正在寻找AreaRegistration自己,你可以使用反射来获取从派生类型AreaRegistration在assambly。

AreaRegistration.RegisterAllAreas()不能用于Web应用程序的预初始化。 但是,如果您想在不调用RegisterAllAreas()情况下获取区域,例如在自动化测试中,则以下代码可能会有所帮助:

     var areaNames = new List<string>();
     foreach (var type in typeof(MvcApplication).Assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(AreaRegistration)))) {
        var areaRegistration = Activator.CreateInstance(type) as AreaRegistration;
        areaNames.Add(areaRegistration.AreaName);
     }

请注意, MvcApplication是从HttpApplication派生的类。 只要该类与程序集注册在同一程序AreaRegistration ,即从AreaRegistration派生的类,就可以使用任何类名。 如果您将应用程序与多个程序集中的区域分开,则需要相应地调整此代码,以便搜索所有这些程序集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM