簡體   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