2012-02-10 16 views
9

Tôi muốn biết làm thế nào tôi có thể làm để cấu trúc một ứng dụng web bằng cách sử dụng một thư mục cho mỗi tính năng (Khách hàng, Đơn hàng) thay vì một thư mục cho mỗi loại tạo tác (Bộ điều khiển, Chế độ xem); điều này có vẻ là một cách tốt hơn để tổ chức các dự án lớn với nhiều tính năng, nhưng tôi không thể tìm thấy bất kỳ thông tin nào về nó.Làm thế nào để cấu trúc ứng dụng ASP.NET MVC bằng cách sử dụng tổ chức mỗi tính năng thay vì mỗi tạo tác?

Tôi không nghĩ rằng việc sử dụng Vùng sẽ là giải pháp vì sử dụng một Vùng cho mỗi đối tượng địa lý sẽ yêu cầu tạo nhiều thư mục lồng nhau.

Tôi nghĩ rằng những gì tôi muốn làm nên có thể bằng cách tùy chỉnh triển khai IViewEngine, nhưng tôi không chắc chắn về điều đó.

Có ai đã cố gắng thực hiện việc này không?

Trả lời

2

Bạn có thể thay đổi vị trí nơi lưu trữ lượt xem, nếu bạn muốn. Ví dụ: http://weblogs.asp.net/imranbaloch/archive/2011/06/27/view-engine-with-dynamic-view-location.asp.

ASP.NET MVC dễ phát triển nhờ triết lý quy ước về cấu hình. Nếu bạn thực sự muốn thay đổi những quy ước đó, bạn có thể; tuy nhiên, bạn sẽ thấy mình đang viết mã nhiều hơn. Ví dụ: giàn giáo sẽ không hoạt động với cấu hình của bạn.

Tại sao không chỉ tạo ra sự tách biệt hợp lý của bạn bên trong các thư mục tạo tác? Vì vậy, bên trong thư mục Models của bạn có một thư mục cho ViewModels và một cho DataModels. Bên trong thư mục DataModels, tạo thư mục cho các tập con khác nhau của mô hình (Khách hàng, Đơn đặt hàng, v.v.). Chỉ cần 2 xu của tôi.

+0

Đây là lý do tôi không thích bản gốc nvention: http://www.paulstovell.com/horizontal-vertical-project-structure - Tôi đã sử dụng loại cấu trúc này trong các dự án khác và nó hợp với tôi tốt. Tôi biết rằng điều này có thể được thực hiện tùy biến việc triển khai IViewEngine và IControllerFactory, ở đây tôi đang tìm kiếm một số kinh nghiệm thực tiễn về sự thay đổi của các quy ước này và tại sao nó là hoặc nó không đáng giá. Lưu ý: Tôi sẽ không sử dụng giàn giáo – gschuager

+0

Tôi đồng ý. Nhóm theo vai trò, ví dụ: bộ điều khiển/mô hình/lượt xem thực sự bắt đầu cắn bạn khi các dự án phát triển vượt ra ngoài một vài bộ điều khiển. Tổ chức dựa trên tính năng rất tiên tiến trong việc tổ chức các dự án sản xuất. Rất khuyên bạn nên nó với bất kỳ dự án. – demisx

2

Bạn có thể tạo thư mục Tính năng gốc, tạo một thư mục cho từng tính năng của bạn và Thư mục được chia sẻ trong đó. Sau đó, bạn có thể thêm tất cả các tập tin (bộ điều khiển, mô hình, quan điểm, kịch bản) liên quan đến một tính năng duy nhất vào thư mục của nó. Nếu nhiều tính năng sử dụng cùng một tệp, bạn có thể sử dụng nó vào Thư mục được chia sẻ. Đây là cách cấu trúc dự án có thể trông giống như:

- App 
    - Features 
    - Orders 
     - OrdersController.cs 
     - Create.cshtml 
     - Create.js 
     - CreateModel.cs 
     - Edit.cshtml 
     - Edit.js 
     - EditModel.cs 
     - EditViewModel.cs 
     ... 
    - Customers 
     ... 
    - Shared 
     - _Layout.cshtml 
     - Error.cshtml 
    - _ViewStart.cshtml 
    - Web.config 
    - FeatureViewLocationRazorViewEngine.cs 
    ... 
    - Web.config 

Để sử dụng Razor với cấu trúc thư mục này, bạn cần phải tạo mới lớp xem cơ thừa hưởng từ RazorViewEngine, thiết lập thích hợp ViewLocationFormats, MasterLocationFormats, PartialViewLocationFormats và thêm thể hiện của quan điểm của bạn công cụ để ViewEngines.Engines bộ sưu tập. Để thực hiện mẫu và kiểm tra sử dụng của nó là FEATURE FOLDERS IN ASP.NET MVC article bởi Tim G. Thomas.

Nếu bạn muốn sử dụng các lớp như Scripts trong chế độ xem của mình, bạn cũng cần phải nhập không gian tên của chúng. Một cách để làm điều này là sao chép tệp Web.config từ thư mục Views cũ sang thư mục Features. Đối với một tùy chọn khác, hãy kiểm tra câu hỏi How do I import a namespace in Razor View Page?.

Để biết thêm thông tin kiểm tra bài viết sau đây:

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