Hiện tại tôi đang chuyển các đối tượng miền của mình đến các chế độ xem của mình và liên kết trực tiếp với chúng từ các POST. Mọi người đều nói điều này là xấu, vì vậy tôi đang cố gắng thêm vào khái niệm ViewModel.bằng cách sử dụng ViewModels cho các hành động POST trong MVC thanh lịch
Tuy nhiên, tôi không thể tìm cách để làm điều này rất thanh lịch, và tôi muốn biết những giải pháp của người khác là không kết thúc với một hành động điều khiển rất lộn xộn.
quá trình tiêu biểu cho tiếng nói một số "thêm người" chức năng trông như thế này:
- tạo ra một yêu cầu GET cho một cái nhìn đại diện cho một viewmodel Person trống
- bài trở lại (in) dữ liệu hợp lệ
- bộ điều khiển liên kết dữ liệu được đăng lên một chế độ xem người
- nếu ràng buộc không thành công, tôi cần thực hiện hành động tương tự như trong (1) nhưng với một số dữ liệu, không phải đối tượng trống và lỗi
- nếu ràng buộc thành công, tôi cần để ánh xạ các thuộc tính từ VM lên một mô hình thực
- xác nhận mô hình
- nếu xác nhận thông qua: tiết kiệm người đó, cam kết, bản đồ chi tiết người dùng một màn hình máy ảo và gửi lại trong một cái nhìn
- nếu xác nhận không thành công, thực hiện các thao tác tương tự như trong (1) nhưng với một số dữ liệu và lỗi
Làm tất cả điều này trong hành động điều khiển (bỏ qua GET) chắc chắn không phải là SRP hoặc DRY.
Tôi đang cố gắng nghĩ ra cách phá vỡ quy trình này để nó tuân thủ SRP, sạch sẽ, mô-đun và trên tất cả có thể kiểm chứng.
Giải pháp cho mọi người là gì?
Tôi đã thử nghiệm với người điều khiển hành động tùy chỉnh để tách mối quan tâm thành các phương pháp riêng lẻ, modelbinders thông minh và chỉ là lực lượng vũ phu đơn thuần nhưng tôi chưa tìm thấy giải pháp hài lòng.
P.S. khi nó thêm vào rất nhiều sự phức tạp, hãy thuyết phục tôi tại sao tôi thậm chí cần phải bận tâm
Bạn đã làm gì? –
không có gì được nêu ra: (vẫn cố gắng để quyết định một giải pháp thanh lịch để bộ điều khiển của tôi không kết thúc thực sự lộn xộn.Tôi nghĩ rằng câu trả lời thực sự là openrasta –
Có lẽ những bài viết này có thể giúp một chút: http://stackoverflow.com/a/25460769/3969501, http://stackoverflow.com/a/25169023/1475331 –