-->

所有地区的ASP.NET MVC4名单(ASP.NET MVC4 List of all areas

2019-08-18 04:15发布

我有在我创建多个区域的ASP.NET应用MVC4,是有办法,我可以找出的是现在和他们的名字地区编程的数量。

Answer 1:

所述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。



Answer 2:

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 。 如果你已经在不止一个装配分手后区您的应用程序,那么你需要,因此搜索所有这些组件相应地调整此代码。



文章来源: ASP.NET MVC4 List of all areas