2010-05-18 27 views
6

Thông thường, thực tiễn tốt là có cả mô hình xem và chỉnh sửa cho ứng dụng MVC? Có nghĩa là, tôi sẽ không muốn các thuộc tính xác nhận trên một mô hình khung nhìn vì nó về cơ bản chỉ đọc.ASP.NET MVC - ViewModels Chỉnh sửa

Trả lời

0

Bạn có thể có thuộc tính được gọi là ReadOnly (boolean) trong ViewModel của mình. Dựa trên thuộc tính đó, chế độ xem thích hợp có thể được hiển thị.

0

Bạn có thể sử dụng mô hình của mình cho mục đích chỉnh sửa. Bạn ràng buộc thuộc tính có thể chỉnh sửa đối với Chế độ xem và các thuộc tính khác vẫn giữ nguyên ngay cả khi ai đó đã nhập vào các đầu vào giả.

public ActionResult Update([Bind(Include=”First, Last”)]User user) 

Điều này đảm bảo bạn chỉ nhận được trường Đầu tiên và Cuối cùng.

Có thể bạn đã bỏ qua nhưng không hiển thị các mục nhập có thể chỉnh sửa cho thuộc tính mô hình không thể chỉnh sửa.

1

Nếu chế độ xem của bạn là chế độ xem CRUD, việc sử dụng cùng một kiểu xem có ý nghĩa. Trên chế độ xem chỉ đọc, các thuộc tính xác thực sẽ bị bỏ qua vì bạn không nhập biểu mẫu. Khi bạn thoát khỏi CRUD, bạn có nhiều biến thể hơn về cách cấu trúc các máy ảo của mình. Tôi có một số tình huống mà một trường chỉ có thể được đặt trong khi chèn. Trong trường hợp này, tôi sử dụng cùng một máy ảo để hiển thị màn hình bổ sung, chỉ đọc và cập nhật (với DisplayFor vs InputFor trong chính chế độ xem html), nhưng tôi có các kiểu nhập khác nhau trên các phương thức Chèn và Cập nhật.

2

Tôi thường tạo mô hình chế độ xem mới cho mỗi chế độ xem. Tôi thấy rằng việc sử dụng lại trong thực tế của ViewModels chỉ là rất thấp và cố gắng để làm cho họ siêu chung không làm việc tuyệt vời và dẫn đến một số trường hợp lạ.

Khi lần đầu tiên tôi bắt đầu tạo ViewModels, tôi sẽ tạo ra các ViewModels thực sự trừu tượng mà tôi cố gắng thực thi một loạt logic nghiệp vụ, nhưng sau đó tôi nhận ra rằng trong hầu hết các trường hợp, dữ liệu tôi đang cố gắng hiển thị trong mỗi trường hợp hoàn toàn khác và tái sử dụng không hoạt động. Vì vậy, tôi chỉ bắt đầu phá vỡ ViewModels của tôi thành những mảnh rất nhỏ được sử dụng một lần. Cho đến nay điều này đã làm việc tốt.

Hầu hết logic nghiệp vụ của tôi giờ đây tôi cố giữ mô hình thay vì kiểu xem. Tôi trường hợp của tôi mô hình của tôi là một mô hình khuôn khổ thực thể và tôi đặt logic kinh doanh trong các lớp học một phần treo ra khỏi các đối tượng DB của tôi.

0

Tôi nghĩ bạn hiểu nhầm mục đích của việc tách Chế độ xem và Mô hình trong Mẫu điều khiển chế độ xem mô hình.

Chế độ xem là về cách xác định cách người dùng sẽ thấy dữ liệu tức là trang web sẽ trông như thế nào.

Mô hình xác định dữ liệu sẽ được sử dụng tức là nội dung mà chế độ xem sẽ hiển thị.

Nếu bạn quyết định rằng bạn cần hai trang web khác nhau để xem dữ liệu và chỉnh sửa dữ liệu thì nó sẽ phù hợp với mẫu MVC mà hai trang này sẽ có các kiểu và chế độ xem riêng biệt.

Nhưng tôi thường chống phân tách việc xem và chỉnh sửa dữ liệu thành hai trang web. Với ajax ngày hôm nay tôi sẽ chỉ làm điều đó trong một trang web.

+0

Anh ấy đang nói về Chế độ xem, chứ không phải Chế độ xem và Mô hình. – UpTheCreek

+0

Và sự khác biệt sẽ là gì? – eaglestorm

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