DataType与UiHint

时间:2010-09-22 15:13:19

标签: c# asp.net asp.net-mvc-2 data-annotations

我一直在使用mvc2一段时间,当我需要设置模板时,我使用DataType属性

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

我看到其他人使用UiHint来获得相同的结果

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

使用这两个属性有什么区别?我应该正常使用哪个属性,还是用于不同的任务?

2 个答案:

答案 0 :(得分:23)

DataType通常用于使其知道这是属性的非常特定的版本,例如价格。

DataType最常见的例子是[DataType(DataTypes.EmailAddress)],它通常是一个字符串,但我们说这是一种非常特殊的字符串。

它们都有用,UIHint 覆盖 DataType。因此,如果您有某个DataType但想要覆盖该特定属性的编辑器,则可以使用UIHint。

答案 1 :(得分:2)

DataType属性有两个目的

  
  • 为数据字段提供其他类型信息。您可以通过将DataTypeAttribute属性应用于数据模型中的数据字段并从DataType枚举中指定其他类型名称来完成此操作。然后视图引擎使用默认模板显示属性,例如布尔值的复选框。
  • 如果要覆盖默认模板,并希望使用自定义模板,则可以使用它将自定义字段模板与该数据字段相关联。在这种情况下,您必须提供部分页面[.cshtml,MVC 4]来描述显示。
  • UIHint的目的与上面的第二点完全相同。 哪里用什么?答案是:上下文,即,更有意义的是什么,更接近您的代码试图解决的物理问题。 如果两者都适用于同一财产怎么办?答案是:UIHint显然具有优先权。但是你为什么要同时申请?