2012-09-11 44 views
6

Trong asp.net mvc (4), ra khỏi hộp, khung nhìn đi vào thư mục Views và sau đó được nhóm theo bộ điều khiển trong các thư mục con.ASP.NET MVC: Nhóm các lớp xung quanh bộ điều khiển

điều khiển đi vào Controllers thư mục, (Xem/Chỉnh sửa/Input) Mô hình đi vào Models thư mục vv

tôi làm như cách quan điểm được tổ chức. Tôi không, tuy nhiên, như phá vỡ phần còn lại của các phần MVC theo chiều ngang.

Câu hỏi của tôi là, điều gì sẽ là nhược điểm của việc rời khỏi cơ cấu tổ chức của lượt xem như vậy, nhưng nhóm các lớp khác bằng bộ điều khiển (tức là theo trường hợp sử dụng). Ví dụ:

/Home 
    HomeController.cs 
    IndexViewModel.cs 
    IndexViewModelBinder.cs 
/Messages 
    MessagesController.cs 
    MessagesApiController.cs 
    MessagesViewModelBinder.cs 
    MessageViewModel.cs 
    MessagesListViewModel.cs 
/Views 
    /Home 
    Index.cshtml 
    /Messages 
    MessagesIndex.cshtml 
    MessageDetails.cshtml 
+1

Đây chủ yếu là khu vực dành cho. –

+0

Các vùng sẽ nhóm các thành phần liên quan lại với nhau, đúng, nhưng bạn vẫn sẽ có 5 bộ điều khiển trong một thư mục và 10 kiểu xem trong một thư mục khác. Vì vậy, các khu vực làm giảm bớt vấn đề, nhưng nó không phải là tương đương với các giải pháp tôi đặt ra. –

Trả lời

3

Tất cả những điều quan trọng là sắp xếp tệp Xem vì chúng được truy cập trong thời gian chạy. Mọi thứ khác được biên dịch thành assembly nên vị trí vật lý của các tệp nguồn của chúng không liên quan.

Giống như bạn tôi thấy sự sắp xếp mặc định một chút lúng túng cho các dự án lớn hơn, vì vậy đây là làm thế nào tôi đặt ra các dự án hiện tại của tôi:

~/ 
    /Areas 
     /DefaultArea // I always use areas, even when there's only one, because it simplifies things when adding additional areas. 
      /Controllers 
       FooController.cs 
      /Views 
       /Foo 
        FooView.aspx // Yes, I use WebFormView. Just a matter of personal preference 
        FooEdit.aspx 
        FooModels.cs // this file contains my ViewModels 

Vì vậy, về cơ bản, tôi đặt lớp ViewModel của tôi trong thư mục tương tự như số lượt xem thay vì đặt tất cả các ViewModels lại với nhau (điều này làm cho cảm giác ít hợp lý hơn). Tôi đã bị cám dỗ đặt bộ điều khiển của mình vào thư mục của các quan điểm của họ, nhưng tôi đã quyết định chống lại nó.

Tôi đã tìm thấy không có nhược điểm đối với cách tiếp cận của tôi cho đến nay (đã sử dụng nó gần 2 năm nay).

1

Tôi thường muốn tránh các khu vực có thể vì nó tạo ra một số vấn đề về định tuyến.

Tôi nghĩ cấu trúc của bạn là hoàn toàn tốt (và vượt trội so với cấu trúc MVC/Web mặc định của việc tách mã dựa trên "loại" thay vì cảm ơn "hàm"). Tất cả những gì tôi đề nghị là bạn chỉ giữ các tệp .cs "web" của bạn trong web DLL (ví dụ: Controllers, ViewModels, Binders, vv) và có cùng cấu trúc trong (các) DLL riêng biệt cho Miền/Dịch vụ/vv lớp để chúng có thể được tái sử dụng/thử nghiệm riêng biệt nếu/theo yêu cầu.

Các vấn đề liên quan