Hãy nói rằng tôi có một trang cho phép chỉnh sửa các chi tiết của người dùng, vì vậy tôi có một ViewModel như thế này:ASP.NET MVC - Làm thế nào chính xác để sử dụng Xem Models
public class UserViewModel {
public string Username { get; set; }
public string Password { get; set; }
public int ManagerId { get; set; }
public string Category { get; set; }
}
Vì vậy, về hành động edituser tôi của tôi có thể đã này qua lại bằng mô hình chất kết dính và sau đó tôi có thể lập bản đồ đó đến domain model:
public ActionResult EditUser(UserViewModel user) {
...
Tuy nhiên, trang đó sẽ hiển thị dưới dạng cũng cần chi tiết như một danh sách các nhà quản lý và các nhóm để cung cấp Dropdowns cho những lĩnh vực đó. Nó cũng có thể hiển thị danh sách những người dùng khác trong thanh bên để bạn có thể chuyển đổi giữa những người dùng khác nhau mà bạn đang chỉnh sửa.
Vì vậy, sau đó tôi có một mô hình điểm:
public class ViewUserViewModel {
public UserViewModel EditingUser { get; set; }
public IEnumerable<SelectListItem> Managers { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
public IEnumerable<SelectListItem> AllUsers { get; set; }
}
Đây có phải là cách chính xác để làm điều đó? Cả hai đều là Người mẫu? Nếu vậy, có quy ước đặt tên tôi nên sử dụng để tôi có thể phân biệt giữa các máy ảo giống như các mô hình và máy ảo chỉ chứa dữ liệu cho trang không?
Tôi đã nhận được tất cả điều này sai?
Giải thích tốt nhất về chủ đề này. Bạn nên đặt nó trên một Blog! +1 –
Bạn đã đề cập đến các mô hình phải chịu trách nhiệm về logic kinh doanh của ứng dụng. Bằng cách kinh doanh, bạn có thể có nghĩa là tất cả việc chuẩn bị dữ liệu, truy vấn, lọc, chiếu mô hình này sang mô hình khác, hoặc một ViewModel cụ thể. Và sau đó ViewModel chuẩn bị như vậy được chuyển đến View bằng bộ điều khiển. Làm thế nào để bạn thể chất làm điều đó? Làm thế nào để bạn thiết kế mô hình để làm kinh doanh? Ví dụ, bạn có chuyển tất cả các phương thức của bộ điều khiển sang các lớp đại diện cho các mô hình khung nhìn không? Hiện nay, tôi có rất nhiều chức năng và "kinh doanh" trong bộ điều khiển mà làm tất cả các bit và bu lông. thanks – Celdor
Thành thật mà nói, bạn không thể thực sự làm điều đó trong ASP.NET MVC. Để thực sự hiểu những gì tôi đang nói về, hãy xây dựng một ứng dụng mẫu trong Ruby on Rails. RoR tuân thủ các mô hình MVC rất nghiêm ngặt, và bạn sẽ thấy chính xác có bao nhiêu đi vào mô hình của họ. ASP.NET MVC, mặt khác chỉ tuân thủ một cách lỏng lẻo với MVC. Bạn "Mô hình" sẽ là một số kết hợp của các lớp thực thể, các mô hình khung nhìn, và một cái gì đó giống như một kho lưu trữ hoặc dịch vụ. Bạn nên cố gắng giữ bộ điều khiển của bạn mỏng, bạn không thể di chuyển * tất cả * logic vào một lớp. –