2010-09-22 52 views
15

我一直在使用MVC2有一段時間了,而當我需要設置我使用的數據類型的模板屬性數據類型VS UiHint

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

我用別人UiHint來達到同樣的結果看

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

是什麼使用這兩個屬性之間的區別?我應該正常使用哪個屬性,還是他們針對不同的任務?

回答

22

數據類型通常被用來讓他們知道,這是一個性質非常具體的版本,比如價格。

數據類型的最常見的例子是[DataType(DataTypes.EmailAddress)]這通常是一個字符串,但我們說,這是一個非常特殊類型的字符串。

它們都有幫助,UIHint 覆蓋了的DataType。所以,如果你有一個特定的數據類型,但你想覆蓋該特定屬性的編輯器,你可以使用UIHint。

1

DataType特性有兩個目的

  • 提供一種用於數據字段的附加類型的信息。您可以通過應用DataTypeAttribute屬性在數據模型中的數據字段和從數據類型枚舉指定的其他類型名稱做到這一點。然後,視圖引擎使用默認模板來顯示屬性,例如布爾值的複選框。
  • 如果要覆蓋默認的模板,並希望使用自定義模板,那麼它可以用來與數據字段的自定義字段模板關聯。在這種情況下,您必須提供一個局部頁面[.cshtml,MVC 4]來描述顯示。
  • UIHint的目的是如上述第二點完全相同。 在哪裏使用什麼?答案是:上下文,即什麼會更有意義,什麼更接近你的代碼試圖解決的物理問題。 如果兩者都適用於相同的屬性?答案是:UIHint顯然優先。但爲什麼你會同時使用?