目的
- 从业务层面来说,针对用户输入的数据必须校验,以便提供优质的服务,以免后期因为数据错误导致的重大问题。
- 从技术层面来说,不正确的输入会导致异常或错误,规范化的开发很重要。
- 从安全层面来说,可以避免恶意用户使用输入数据中存在的漏洞注入攻击,从而入侵服务器,窃取重要数据。
特性
在Blazor组件和EF框架中,提供DRY(不要自我重复)原则级别的校验,即在实体类中采用特性的方式声明,应用程序的所有位置都将强制执行。
System.ComponentModel.DataAnnotations:该类提供校验支持
DataAnnotations 命名空间下提供内置校验规则特性:
- [ValidationNever]. 如果要确保该字段从不包含在验证中,请使用此特性。
- [CreditCard]. 如果要记录用户的有效信用卡号,请使用此特性。
- [Compare]. 如果要确保模型中的两个属性匹配,请使用此特性。
- [Phone]. 如果要记录用户的有效电话号码,请使用此特性。
- [RegularExpression]. 如果通过将值与正则表达式进行比较来检查值的格式,请使用此特性。
- [StringLength]. 如果要检查字符串值的长度是否不超过最大长度,请使用此特性。
- [Url]. 如果要记录用户的有效 URL,请使用此特性。
- [Required]. 如果要求用户必须填写,请使用此特性。
- [Key]. 数据库表的主键标识,请使用此特性。
- [Range]. 将值限制在指定范围内,请使用此特性。
提交
使用EditForm组件时,有三个事件可用于响应表单提交:
- OnSubmit: 无论验证结果如何,只要用户提交表单,就会触发该事件。(该事件需要配合EditContext和Validate()使用)
- OnValidSubmit: 当用户提交表单且输入的验证通过时,将触发该事件。
- OnInvalidSubmit: 当用户提交表单且输入的验证失败时,将触发该事件。