Tôi có một ứng dụng ASP.NET MVC4 trong đó tôi đang tạo nhiều khu vực, có cách nào tôi có thể tìm ra lập trình số lượng các khu vực có mặt và tên của chúng.ASP.NET MVC4 Danh sách tất cả các khu vực
Trả lời
AreaRegistration.RegisterAllAreas();
đăng ký từng tuyến đường khu vực với DataTokens["area"]
trong đó giá trị là tên của khu vực.
Vì vậy, bạn có thể nhận được những cái tên khu vực đăng ký từ RouteTable
var areaNames = RouteTable.Routes.OfType<Route>()
.Where(d => d.DataTokens != null && d.DataTokens.ContainsKey("area"))
.Select(r => r.DataTokens["area"]).ToArray();
Nếu bạn đang tìm kiếm các AreaRegistration
bản thân bạn có thể sử dụng phản ánh để có được loại này xuất phát từ AreaRegistration
trong assambly của bạn.
AreaRegistration.RegisterAllAreas()
không thể sử dụng trước khi khởi tạo ứng dụng web. Tuy nhiên, nếu bạn muốn nhận các khu vực mà không cần gọi số RegisterAllAreas()
, ví dụ: trong kiểm tra tự động, sau đó mã sau đây có thể hữu ích:
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);
}
Lưu ý rằng MvcApplication
là lớp có nguồn gốc từ HttpApplication
. Bạn có thể sử dụng bất kỳ tên lớp nào miễn là lớp đó nằm trong cùng một assembly như các đăng ký lắp ráp, tức là các lớp bắt nguồn từ AreaRegistration
. Nếu bạn đã chia nhỏ ứng dụng của mình với các vùng trong nhiều hơn một assembly, thì bạn cần phải thích ứng với mã này sao cho nó tìm kiếm tất cả các assembly đó.
Cảm ơn bạn đã trả lời nhanh – dev