2010-09-22 21 views
15

tôi đã được sử dụng mvc2 trong một thời gian bây giờ, và khi tôi cần phải thiết lập các mẫu i sử dụng DataType AttributeDataType vs UiHint

[DataType("DropDown")] 
    public int Field { get; set; } 

tôi thấy những người khác sử dụng UiHint để đạt được kết quả tương tự

[UiHint("DropDown")] 
    public int Field { get; set; } 

sự khác biệt giữa việc sử dụng hai thuộc tính này là gì? Tôi nên sử dụng thuộc tính nào bình thường hoặc chúng thuộc các nhiệm vụ khác nhau?

Trả lời

22

Loại dữ liệu thường được sử dụng để làm cho nó biết rằng đây là phiên bản rất cụ thể của một thuộc tính, chẳng hạn như giá.

Ví dụ phổ biến nhất về Loại dữ liệu là [DataType(DataTypes.EmailAddress)] thường là một chuỗi nhưng chúng tôi đang nói rằng đây là một loại chuỗi rất cụ thể.

Cả hai đều hữu ích và UIHint ghi đè Loại dữ liệu. Vì vậy, nếu bạn có một DataType nhất định nhưng bạn muốn ghi đè trình chỉnh sửa cho thuộc tính cụ thể đó, bạn có thể sử dụng UIHint.

1

DataType thuộc tính có hai mục đích

  • Cung cấp thông tin kiểu bổ sung cho một trường dữ liệu. Bạn làm điều này bằng cách áp dụng thuộc tính DataTypeAttribute cho một trường dữ liệu trong mô hình dữ liệu và bằng cách chỉ rõ tên kiểu bổ sung từ kiểu liệt kê DataType. Sau đó, công cụ xem sử dụng mẫu mặc định để hiển thị thuộc tính, chẳng hạn như hộp kiểm cho boolean.
  • Nếu bạn muốn ghi đè mẫu mặc định và muốn sử dụng mẫu tùy chỉnh, mẫu có thể được sử dụng để liên kết mẫu trường tùy chỉnh với trường dữ liệu đó. Trong trường hợp này, bạn phải cung cấp một phần trang [.cshtml, MVC 4] để mô tả hiển thị.
  • Mục đích của UIHint giống hệt như điểm thứ hai ở trên. Nơi để sử dụng những gì? Câu trả lời là: ngữ cảnh, tức là., Điều gì sẽ có ý nghĩa hơn, cái gì gần hơn với vấn đề vật lý mà mã của bạn đang cố giải quyết. Điều gì sẽ xảy ra nếu cả hai được áp dụng cho cùng một thuộc tính? Câu trả lời là: UIHint có ưu tiên, rõ ràng. Nhưng tại sao bạn sẽ áp dụng cả hai?

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