DataType与UiHint

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

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

我看到其他人使用UiHint来达到相同的效果

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

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

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

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

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

DataType属性有两个用途

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