[英]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.