Blazor Server数据校验

目的

  1. 从业务层面来说,针对用户输入的数据必须校验,以便提供优质的服务,以免后期因为数据错误导致的重大问题。
  2. 从技术层面来说,不正确的输入会导致异常或错误,规范化的开发很重要。
  3. 从安全层面来说,可以避免恶意用户使用输入数据中存在的漏洞注入攻击,从而入侵服务器,窃取重要数据。

特性

在Blazor组件和EF框架中,提供DRY(不要自我重复)原则级别的校验,即在实体类中采用特性的方式声明,应用程序的所有位置都将强制执行。

System.ComponentModel.DataAnnotations:该类提供校验支持

DataAnnotations 命名空间下提供内置校验规则特性:

  • [ValidationNever]. 如果要确保该字段从不包含在验证中,请使用此特性。
  • [CreditCard]. 如果要记录用户的有效信用卡号,请使用此特性。
  • [Compare]. 如果要确保模型中的两个属性匹配,请使用此特性。
  • [Phone]. 如果要记录用户的有效电话号码,请使用此特性。
  • [RegularExpression]. 如果通过将值与正则表达式进行比较来检查值的格式,请使用此特性。
  • [StringLength]. 如果要检查字符串值的长度是否不超过最大长度,请使用此特性。
  • [Url]. 如果要记录用户的有效 URL,请使用此特性。
  • [Required]. 如果要求用户必须填写,请使用此特性。
  • [Key]. 数据库表的主键标识,请使用此特性。
  • [Range]. 将值限制在指定范围内,请使用此特性。

提交

使用EditForm组件时,有三个事件可用于响应表单提交:

  • OnSubmit: 无论验证结果如何,只要用户提交表单,就会触发该事件。(该事件需要配合EditContext和Validate()使用)
  • OnValidSubmit: 当用户提交表单且输入的验证通过时,将触发该事件。
  • OnInvalidSubmit: 当用户提交表单且输入的验证失败时,将触发该事件。