数据校验
约 591 字大约 2 分钟
2025-02-12
假设 Controller 中 SetPerson 方法的其中一个参数是对象,可以给这个对象的属性设置校验规则
public void SetPerson( Person data ){
......
}
class Person
{
[Required(ErrorMessage = "名称是必填项")]
public string Name { get; set; }
[Range(0, 100, ErrorMessage = "年龄必须在0到100岁之间")]
public int Age { get; set; }
}
在.NET 中,System.ComponentModel.DataAnnotations 命名空间提供了一系列内置的验证特性,用于确保模型的数据符合特定的规则。以下是一些与[Required]特性类似的内置验证特性,它们用于确保属性值满足特定的条件:
[CreditCard] - 验证属性值是否是有效的信用卡号码。
[EmailAddress] - 验证属性值是否是有效的电子邮件地址。
[Phone] - 验证属性值是否是有效的电话号码。
[Url] - 验证属性值是否是有效的 URL。
[RegularExpression] - 验证属性值是否与指定的正则表达式匹配。
[Range] - 验证属性值是否在指定的范围内。
[StringLength] - 验证字符串属性值的长度是否在指定的范围内。
[MaxLength] - 验证字符串属性值的长度是否不超过指定的最大长度。
[MinLength] - 验证字符串属性值的长度是否至少为指定的最小长度。
[Compare] - 验证属性值是否与另一个属性值相同。
[DataType] - 指定属性的 数据类型(如日期、时间、电话号码等),主要用于前端验证和显示提示。
下面是一个使用这些内置验证特性的类定义示例:
using System.ComponentModel.DataAnnotations;
public class MyModel
{
[Required(ErrorMessage = "姓名为必填项。")]
[StringLength(100, ErrorMessage = "姓名长度必须在1到100个字符之间。")]
public string Name { get; set; }
[Required(ErrorMessage = "电子邮件为必填项。")]
[EmailAddress(ErrorMessage = "电子邮件地址无效。")]
public string Email { get; set; }
[Required(ErrorMessage = "信用卡号为必填项。")]
[CreditCard(ErrorMessage = "信用卡号码无效。")]
public string CreditCardNumber { get; set; }
[Required(ErrorMessage = "电话号码为必填项。")]
[Phone(ErrorMessage = "电话号码无效。")]
public string PhoneNumber { get; set; }
[Required(ErrorMessage = "网址为必填项。")]
[Url(ErrorMessage = "网址无效。")]
public string Website { get; set; }
[Required(ErrorMessage = "年龄为必填项。")]
[Range(18, 100, ErrorMessage = "年龄必须在18到100岁之间。")]
public int Age { get; set; }
[RegularExpression(@"^\d{5}(-\d{4})?$", ErrorMessage = "邮编无效。")]
public string ZipCode { get; set; }
[Compare("Password", ErrorMessage = "密码和确认密码不匹配。")]
public string ConfirmPassword { get; set; }
[DataType(DataType.Password)]
public string Password { get; set; }
}