3.2.4 其他数据注解

 1.显示性的数据注解

      我们都注意到,变量FirstName在页面上的可能显示为姓名,这样做才是符合实际需要的,要想这样做,我们就必须利用DisplayName:

[Required(ErrorMessage = "First Name is required")]
[DisplayName("姓名")]
[StringLength(160, MinimumLength = 3)]
public string Name { get; set; }

     DisplayName显示模型属性设置友好的“显示名称”, 同样是为属性定义说明,还有另一种注解:Dispaly,它的作用并不仅仅是指定显示的内容,甚至能够指定显示的顺序,像是这样:

[Required(ErrorMessage = "First Name is required")]
[Display(Name = "姓名", order = 15000)]
[StringLength(160)]
public string Name { get; set; }

       order的默认参数是10000,如果其他变量并没有设置order值,FirstName就排在其他变量后面。但实际上是不用这么麻烦的,如果不指定该值,就会按照变量声明的顺序排列。

      Display在用于属性的显示名称上,具有更高的优先级。DisplayName专门用于定义属性的显示名称,但是Display并不仅仅是如此。

2.DisplayFormat

      处理属性各种格式化选项,可以为运行时指定一个应用于属性值的格式化字符串,例如可用于设置日期的格式。

     当属性包含空值,NullDisplayText,可以提供可选的显示文本。ConvertEmptyStringToNull,表示是否将传入的空字符串转换成Null。

      也可以为包含标记的属性关闭HTML编码HtmlEncode。

[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:c}")]
public decimal Price { get; set; }

[DisplayFormat(DataFormatString = "{0:d}")] 
public DateTime ReleaseDate { get; set; }

3.DataType

      DataTypeAttribute 特性允许使用比数据库内部类型更加具体的类型来标记字段。 类型名称选自 DataType 枚举类型,如Email、Date、Time、PhoneNumber、Currency、EmailAddress、Pasword、Url、ImageUrl、CredtCard、PostCode、MultilineText等。DataType属性并不是验证属性,它们用来告诉视图引擎怎么去渲染HTML,比如DataType.Date只显示日期,并不包括时间。

      需要配合使用@Html.Editor表单元素,才能出现验证效果,否则不起作用。

(1)密码

[DataType(DataType.Password)]
public String Password { get; set; }

(2)多行文本框

[DataType(DataType.MultilineText)]
public string Message { get; set; }

(3)日期     

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime EnrollmentDate { get; set; }

       DataType.Date表示不带时间成分的日期,它不指定日期的显示格式。DisplayFormat属性用于显示指定日期格式。

       从上面可以看出,DataType所谓的数据类型,并不是我们常说的int,float等,事实上,DataType本身也有一个可支持的数据类型枚举:

public enum DataType{
    Custom, DateTime, Date, Time, Duration, 
PhoneNumber, Currency, Text, Html, MultilineText,
EmailAddress, Password, Url, ImageUrl, CreditCard,
PostalCode, Upload }

4.Table和Column

      如果希望数据库中的表和列的名字,与模型类不一致,可以使用Table和Column。

(1)Table

     您可以用 Table 特性指定该表的名称。举例来说,下面的注释指定表名称为 InternalBlogs。

[Table("InternalBlogs")]
public class Blog

(2)Column

   注释更适于用来指定被映射列的特性。您可以规定名称、数据类型甚至列出现在表中的顺序。下面是 Column 特性的示例。

[Column(“BlogDescription", TypeName="ntext")]
public String Description {get;set;}

   下面是重新生成后的表。表名称已更改为 InternalBlogs, Description 列现在是 BlogDescription。

5.关系特性:InverseProperty ForeignKey

6.TimeStamp

7.ConcurrencyCheck

posted @ 2016-10-29 11:43  RunningYY  阅读(498)  评论(0编辑  收藏  举报