2010-07-26 46 views
10

Thực tiễn tốt nhất là đưa chú thích xác thực dữ liệu vào Mô hình hoặc Chế độ xem? Ưu điểm/nhược điểm của phương pháp này so với cách tiếp cận khác là gì?Xác thực MVC bằng cách sử dụng Chú thích dữ liệu - Lớp mô hình hoặc Xem mô hình lớp học?

Tò mò để biết nơi mọi người đang đặt xác thực của họ, tôi hiện đang làm việc đó trong dự án mô hình. Tuy nhiên tôi đã thấy một vài người nói rằng đây không phải là thực hành tốt nhất.

Trả lời

10

As far as tốt nhất thực hành là có liên quan tôi sẽ nói: trong cả hai. Xác thực phải tách biệt. Các khung như FluentValidation cho phép bạn tách biệt hoàn toàn logic xác thực khỏi các mô hình của mình. Nhưng để trả lời câu hỏi của bạn, tôi sẽ đặt xác nhận vào Xem mô hình vì đó là những lớp bạn đang ràng buộc các hành động điều khiển của bạn. Bạn cũng có thể có nhiều Mô hình xem được gắn với cùng một mô hình nhưng với các quy tắc xác thực khác nhau.

+0

ĐIỂM TỐT! Bạn cũng có thể có nhiều Mô hình xem được gắn với cùng một mô hình nhưng với các quy tắc xác thực khác nhau. – GibboK

+0

Tôi không thấy bất kỳ trường hợp nào cho _View Mô hình được gắn với cùng một mô hình nhưng với các quy tắc xác thực khác nhau_ –

4

Đặt chú thích của bạn trong Chế độ xem của bạn.

Có thể có nhiều Chế độ xem cho mỗi DataModel, ví dụ như DisplayModel, EditModel, ListModel .. tất cả đều có thể yêu cầu các chú thích khác nhau.

Nó thường được coi là thực hành tốt nhất không để lộ DataModel của bạn trực tiếp đến một chế độ xem, đặc biệt trong trường hợp "POST"/Chỉnh sửa.

tôi khuyên bạn nên đọc cái nhìn tổng quan tuyệt vời Brad Wilson tại địa chỉ: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html

Những bài viết này chủ yếu bao gồm việc sử dụng các Dislpay và chỉnh sửa các mẫu trong vòng MVC2, nhưng minh họa rõ ràng những lợi thế của việc sử dụng mô hình ViewModel

0

Quan điểm của tôi là: nó phụ thuộc. Tôi thường kiểm soát đầu vào của mình trong bộ điều khiển và các kiểu máy, do đó đầu vào sẽ xác nhận cả trong bộ điều khiển và trong mô hình. Đây là trường hợp tôi muốn kết nối mô hình với một loại ứng dụng khác. Nói, WPF.

Tuy nhiên, nhiều người cũng sử dụng "lập trình phòng thủ". Điều này có nghĩa là mọi đầu vào cho một hàm (paramter) được chọn. Trong trường hợp này, một đầu vào có thể được kiểm tra một vài lần nhưng bạn đảm bảo rằng ngay cả khi bạn thay đổi một cái gì đó, thì logic hợp lệ vẫn giữ.

Vì vậy, đối với tôi, một vài câu hỏi nảy sinh:

1) Có cơ hội mà ở đó có thể là một kịch bản mà logic xác được bỏ qua. Giống như buộc mô hình vào ứng dụng wpf.

2) Tôi có muốn thỏa hiệp hiệu suất đảm bảo an ninh bằng cách kiểm tra đầu vào trong mọi chức năng không?

Đối với tôi this bài viết về các mối quan tâm cắt ngang cũng giúp ích.

Đó là những suy nghĩ của tôi về vấn đề này. Hy vọng nó sẽ giúp

1

Nếu bạn làm theo trách nhiệm duy nhất thì có lẽ nó nên đi vào thành phần riêng của nó. Điều đó đang được nói, nếu bạn muốn thực hiện một cắt ngắn nó là okay, nhưng nó trong ViewModel. Nó chắc chắn không nên đi vào mô hình mặc dù. Mô hình của bạn phải là dữ liệu "thuần túy". Không có quy tắc kinh doanh và xác nhận là quy tắc kinh doanh.

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