Trong ASP cổ điển, bạn đã từng có mã doanh nghiệp trong tệp của mình ("Lấy nội dung từ cơ sở dữ liệu và hành động trên đó").
Trong ASP.net MVC - bất kể bạn sử dụng ASPX hay Razor View Engine - bạn đang xử lý Xem Logic. Những thứ như "Tôi có 20 nhân viên, hiển thị chúng trong một bảng" hoặc "Nếu số này là số âm, hiển thị màu đỏ thay vì màu đen".
Logic nghiệp vụ nằm trong bộ điều khiển và thấp hơn. Bộ điều khiển sau đó chuyển dữ liệu nghiệp vụ tới khung nhìn thông qua một mô hình khung nhìn. View sau đó chỉ có mã xử lý hiển thị nó, thường nhỏ nhưng có thể có một vài nhánh logic của riêng nó ("Ngày hiển thị trong miền người dùng" hoặc "Hiển thị nhân viên nam và nữ trong các bảng riêng biệt")
Bạn có thể phạm sai lầm khi đặt logic nghiệp vụ tại đây. Nói, nhân viên được thuê trước năm 2008 đủ điều kiện để được cấp Chứng chỉ trung thành. Vì vậy, bảng của bạn có một cột "In chứng chỉ" mà chỉ được hiển thị cho các. Phương pháp đơn giản, nhưng sai là đặt một lệnh if-:
@if(employee.HireYear <= 2008) {
Html.ActionLink("Print Certificate","Certificate","Cheese",
new { id = employee.Id }, null);
}
này hoạt động, nhưng là sai vì xem bây giờ chứa logic kinh doanh. Cách tiếp cận đúng là thêm một trường bool mới vào ViewModel. Vì nó có chứa một IList<Employee>
trong ví dụ này, điều đó có nghĩa là tạo một lớp khác EmployeeWithCertificateEligibility
hoặc tốt hơn, có danh sách riêng biệt cho nhân viên đủ điều kiện và không đủ điều kiện. Đó là hơi phổ biến mặc dù có logic kinh doanh tràn vào xem, đôi khi dưới hình thức của một phương pháp mở rộng HtmlHelper.
Chỉnh sửa: Bạn so sánh nó với "triển khai asp cổ điển ban đầu". Điều đó có thể có nghĩa là ba điều: ASP cổ điển, ASP.net WebForms hoặc ASP.net MVC với công cụ xem WebForms/ASPX. Ví dụ của tôi liên quan đến hai trường hợp đầu tiên. Nếu bạn đã biết toàn bộ các công cụ MVC và tự hỏi về sự khác biệt giữa Webforms và Razor View Engine: Về mặt khái niệm, chúng giống nhau, Razor chỉ kém tiết kiệm hơn và sạch hơn.
Nguồn
2011-11-12 17:00:17
Bản sao có thể có của chuỗi này http://stackoverflow.com/questions/558002/asp-net-mvc-classic-asp-with-net-class-library-really – Chandermani
@Chandermani - Đó là về ASP.Net MVC không Dao cạo. – klabranche
@klabranche công cụ xem không quan trọng, mối quan tâm ở đây là trộn lẫn giao diện người dùng và mã phía máy chủ. – Chandermani