Blazor表单验证使用DataAnnotations特性(如[Required]、[EmailAddress])声明规则,配合EditForm、DataAnnotationsValidator及ValidationMessage组件实现自动校验;需注入EditContext调用Validate()手动触发,并支持自定义验证特性。
Blazor 表单验证用 DataAnnotations 很直接,核心是给模型属性加特性(如 [Required]、[EmailAddress]),再配合 EditForm 和 ValidationSummary/ValidationMessage 组件自动触发校验。
在 C# 模型类中,用 System.ComponentModel.DataAnnotations 命名空间下的特性声明约束:
[Required]:字段必填(空字符串或 null 都不通过)[StringLength(50, MinimumLength = 2)]:限制长度范围[EmailAddress]:基础邮箱格式检查(正则匹配,不发邮件验证)[Range(18, 120)]:数值范围(支持 int、double 等)[RegularExpression(@"^\d{3}-\d{2}-\d{4}$")]:自定义正则(如社保号格式)注意:这些特性只影响客户端显示逻辑和基础服务端验证,不替代后端业务校验。
把模型绑定到 EditForm,它会自动监听输入变化并触发 DataAnnotationsValidator:
DataAnnotationsValidator是关键组件,没有它,特性不会生效;ValidationMessage的For参数必须是表达式(@(() => ...)),不能写字符串或变量。手动触发表单验证
默认只在提交或失去焦点时校验。如需主动校验(比如点击“下一步”但不提交),可注入
EditContext:
- 在组件中定义
private EditContext? editContext;- 在
EditForm上添加
@ref="editContext"- 调用
editContext?.Validate()即可立即运行所有规则校验结果会更新 UI,
ValidationSummary和各ValidationMessage也会同步刷新。自定义验证特性(可选进阶)
内置特性不够用时,可继承
ValidationAttribute写自己的规则:public class FutureDateAttribute : ValidationAttribute { protected override ValidationResult? IsValid(object? value, ValidationContext validationContext) { if (value is DateTime date && date < DateTime.Today) return new ValidationResult("日期不能早于今天"); return ValidationResult.Success; } }然后像其他特性一样加到属性上:
[FutureDate]。服务端同样生效,Blazor WebAssembly 也支持(因代码 AOT 编译后仍可执行)。基本上就这些。DataAnnotations 验证轻量、声明式、前后端复用,适合大多数场景。注意别依赖它做复杂业务判断(比如“用户名是否已存在”得靠后端 API),那是
ValidationMessageStore或自定义异步验证的活儿。
# 后端 # ai # 邮箱 # c# # red # NULL # for # 命名空间 # 表单验证 # 字符串 # int # double # 继承 # private # 异步 # ui # 自定义 # 表单 # 服务端 # 自己的 # 进阶 # 都不 # 也会 # 那是 # 可选
相关文章: 长沙企业网站制作哪家好,长沙水业集团官方网站? 官网建站费用明细查询_企业建站套餐价格及收费标准指南 建站之星IIS配置教程:代码生成技巧与站点搭建指南 太原网站制作公司有哪些,网约车营运证查询官网? 怎么将XML数据可视化 D3.js加载XML 教程网站设计制作软件,怎么创建自己的一个网站? 婚礼视频制作网站,学习*后期制作的网站有哪些? 已有域名能否直接搭建网站? 详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四) 免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况? 常州自助建站费用包含哪些项目? 浅谈Javascript中的Label语句 猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成? 建站之星多图banner生成与模板自定义指南 如何通过山东自助建站平台快速注册域名? 建站之星3.0如何解决常见操作问题? 股票网站制作软件,网上股票怎么开户? 动图在线制作网站有哪些,滑动动图图集怎么做? 建站之星导航菜单设置与功能模块配置全攻略 如何快速登录WAP自助建站平台? 如何在IIS中配置站点IP、端口及主机头? 在线制作视频的网站有哪些,电脑如何制作视频短片? 如何通过cPanel快速搭建网站? c# await 一个已经完成的Task会发生什么 如何用AWS免费套餐快速搭建高效网站? 如何选择高效可靠的多用户建站源码资源? 北京网站制作网页,网站升级改版需要多久? 导航网站建站方案与优化指南:一站式高效搭建技巧解析 专业网站建设制作报价,网页设计制作要考什么证? 如何在Windows环境下新建FTP站点并设置权限? 制作旅游网站html,怎样注册旅游网站? 唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱? 如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗? 教学论文网站制作软件有哪些,写论文用什么软件 ? 历史网站制作软件,华为如何找回被删除的网站? 深圳网站制作公司好吗,在深圳找工作哪个网站最好啊? 如何通过虚拟主机快速完成网站搭建? 制作网站外包平台,自动化接单网站有哪些? 建站中国官网:模板定制+SEO优化+建站流程一站式指南 建站之星如何一键生成手机站? 如何零基础在云服务器搭建WordPress站点? 建站VPS能否同时实现高效与安全翻墙? 巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成 网站建设设计制作营销公司南阳,如何策划设计和建设网站? ui设计制作网站有哪些,手机UI设计网址吗? c# 服务器GC和工作站GC的区别和设置 c++怎么用jemalloc c++替换默认内存分配器【性能】 长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的? 较简单的网站制作软件有哪些,手机版网页制作用什么软件? 北京专业网站制作设计师招聘,北京白云观官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。