2010-09-22 51 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显然优先。但为什么你会同时使用?