ASP.NET - MVC - Area

Area trong MVC ASP.NET

Bạn đã biết rằng ASP.NET MVC framework có các thư mục riêng cho Model, View và Controller. Tuy nhiên, ứng dụng lớn có thể gồm một số lượng lớn các lớp controller, lớp views và các lớp model. Vì vậy, để duy trì số lượng lớn views, models and controllers với cấu trúc dự án ASP.NET MVC có thể trở nên khó quản lý.

Trong ASP.NET MVC 2 có đối tượng Area cho phép chúng tôi phân vùng ứng dụng lớn thành các đơn vị nhỏ hơn, trong đó mỗi đơn vị chứa cấu trúc thư mục MVC riêng, giống như cấu trúc thư mục MVC mặc định. Ví dụ: ứng dụng doanh nghiệp lớn có thể có các mô-đun khác nhau như quản trị viên, tài chính, nhân sự, tiếp thị, v.v. Vì vậy, Area có thể chứa cấu trúc thư mục MVC riêng cho tất cả các mô-đun này như được hiển thị bên dưới.

Cách tạo một Area

Chúng ta có thể tạo một Area bằng cách sử dụng ASP.NET MVC 5 trong Visual Studio bằng cách click chuột phải lên project trong solution explorer -> Add -> Area..

Nhập tên Area trong hộp thoại Add Area và click nút Add.

 

Nó sẽ thêm thư mục  'admin' folder trong thư mục Area như hình :

Như bạn có thể thấy, mỗi khu vực bao gồm lớp AreaRegistration trong tệp {tên area } + tập tin AreaRegistration.cs.

Sau đây là lớp adminAreaRegistration được tạo với khu vực quản trị.

Area Registration:

public class adminAreaRegistration : AreaRegistration 
{
    public override string AreaName 
    {
        get 
        {
            return "admin";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context) 
    {
        context.MapRoute(
            "admin_default",
            "admin/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }
}

Lớp AreaRegistration ghi đè phương thức để ánh xạ đến area. Trong ví dụ trên, AreaRegistration class overrides RegisterArea method to map the routes for the area. Trong ví dụ trên, Các URL bắt đầu với quản trị viên sẽ được xử lý bởi các bộ điều khiển có trong cấu trúc thư mục quản trị trong thư mục Area.Ví dụ, http://localhost/admin/profile sẽ được xử lý bởi controller chứa trong thư mục Areas/admin/controller/ProfileController.

Cuối cùng,tất cả các khu vực phải được đăng ký trong sự kiện Application_Start trong tập tin Global.asax.cs AreaRegistration.RegisterAllAreas();