向 Movie 模型添加了验证逻辑。 每当用户创建或编辑电影时,都会强制执行验证规则。
1.打开Movie.cs文件。DataAnnotations命名空间提供了一组内置的验证属性,这些属性以声明方式应用于类或属性。
DataAnnotations还包含格式化属性,如格式化DataType帮助,不提供任何验证。
Movie类利用内置的Required,StringLength,RegularExpression,和Range验证特性。
public class Movie
{
public int Id { get; set; }
[StringLength(60, MinimumLength = 3)]
[Required]
public string Title { get; set; }
[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(@"^[A-Z]+[a-zA-Z""'s-]*$")]
[Required]
[StringLength(30)]
public string Genre { get; set; }
[RegularExpression(@"^[A-Z]+[a-zA-Z0-9""'s-]*$")]
[StringLength(5)]
[Required]
public string Rating { get; set; }
}
验证属性指定要对其应用的模型属性强制执行的行为:
在Required和MinimumLength属性指示某个属性必须有一个值; 但没有什么能阻止用户输入空格来满足此验证。
该RegularExpression属性用于限制可以输入的字符。在前面的代码中,“类型”:
必须只使用字母。
第一个字母必须是大写的。不允许使用空格,数字和特殊字符。
该RegularExpression“等级”:
要求第一个字符是大写字母。
允许后续空格中的特殊字符和数字。“PG-13”对于评级有效,但对于“类型”则失败。
该Range属性将值约束在指定范围内。
该StringLength属性允许您设置字符串属性的最大长度,以及可选的最小长度。
值类型(如decimal,int,float,DateTime)的内在需要和不需要的[Required]属性。
ASP.NET Core自动执行验证规则有助于使您的应用程序更加强大。它还确保您不会忘记验证某些内容并无意中将错误数据放入数据库中。