首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >所有区域的ASP.NET MVC4列表

所有区域的ASP.NET MVC4列表
EN

Stack Overflow用户
提问于 2013-03-29 03:48:07
回答 2查看 4.3K关注 0票数 19

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-29 04:49:56

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

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

代码语言:javascript
复制
var areaNames = RouteTable.Routes.OfType<Route>()
    .Where(d => d.DataTokens != null && d.DataTokens.ContainsKey("area"))
    .Select(r => r.DataTokens["area"]).ToArray();

如果您正在寻找AreaRegistration本身,您可以使用反射来获取从assambly中的AreaRegistration派生的类型。

票数 32
EN

Stack Overflow用户

发布于 2017-07-17 13:20:16

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

代码语言:javascript
复制
     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派生的类。如果您将应用程序拆分成多个程序集中的区域,则需要相应地调整此代码,以便它搜索所有这些程序集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15690834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档