使用 DataType 特性应用于 Date 和 Price 属性
[Display(Name = "Release Date")] [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } [Range(1, 100)] [DataType(DataType.Currency)] Column(TypeName = "decimal(18, 2)")] public decimal Price { get; set; }
使用 [RegularExpression] 特性验证数据的格式。 [DataType] 属性用于指定比数据库内部类型更具体的数据类
型。 [DataType] 特性不是验证特性。 示例应用程序中仅显示日期,不显示时间。
DataType 枚举提供多种数据类型,如 Date 、 Time 、 PhoneNumber 、 Currency 、 EmailAddress 等。
DataType.Date 不指定显示日期的格式。 默认情况下,数据字段根据基于服务器的 CultureInfo 的默认格式进行
显示。
[DisplayFormat] 特性用于显式指定日期格式:
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime ReleaseDate { get; set; }
可单独使用 [DisplayFormat] 特性,但通常建议使用 [DataType] 特性。 [DataType] 特性按照数据在屏幕上的呈现方式传达数据的语义。 [DataType] 特性可提供 [DisplayFormat] 所不具有的以下优点:
浏览器可启用 HTML5 功能(例如显示日历控件、区域设置适用的货币符号、电子邮件链接等)。
默认情况下,浏览器将根据区域设置采用正确的格式呈现数据。
借助 [DataType] 特性,ASP.NET Core 框架可选择适当的字段模板来呈现数据。 单独使用时, DisplayFormat特性将使用字符串模板。
using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace RazorPagesMovie.Models { public class Movie { public int ID { get; set; } [StringLength(60, MinimumLength = 3)] public string Title { get; set; } = string.Empty; [Display(Name = "Release Date"), DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } [RegularExpression(@"^[A-Z]+[a-zA-Zs]*$"), Required, StringLength(30)] public string Genre { get; set; } = string.Empty; [Range(1, 100), DataType(DataType.Currency)] [Column(TypeName = "decimal(18, 2)")] public decimal Price { get; set; } [RegularExpression(@"^[A-Z]+[a-zA-Z0-9""'s-]*$"), StringLength(5)] public string Rating { get; set; } = string.Empty; } }