You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor表单中InputNumber控件的DisplayName未在验证ErrorMessage中生效问题

问题根因
  • Blazor 内置的 DataAnnotationsValidator 在执行数据注解验证逻辑时,仅会读取模型本身的元数据,包括属性上标注的 [DisplayName] 特性、属性的原生定义名称,完全不会读取页面中对应Input控件上设置的 DisplayName 属性值,所以你在 InputNumber 上自定义的名称无法被数据注解的错误信息模板识别替换。
  • Input控件的 DisplayName 属性仅作用于两类场景:一是控件自身触发的字段级校验提示,二是和 <ValidationMessage For="..." /> 字段级验证提示组件搭配使用的场景,不会影响全局 DataAnnotationsValidator 的执行逻辑。
适配动态字段名需求的解决方案

你需要根据用户角色动态切换展示名称、无法在模型上加固定 [DisplayName] 特性的场景,可选用以下任意方案解决:

  1. 弃用全局的 <ValidationSummary /> 组件,改用字段级的 <ValidationMessage /> 组件,该组件会自动读取对应Input控件设置的 DisplayName 替换错误信息中的{0}占位符,示例代码如下:
<InputNumber class="m-sm-0 pl-sm-1 py-sm-1 form-control" 
@bind-Value="CustomerData.ID_CUSTOMER" DisplayName="FCI Key" />
<ValidationMessage For="() => CustomerData.ID_CUSTOMER" />
  1. 自定义实现验证器,替换默认的 DataAnnotationsValidator,在验证逻辑执行时注入当前用户角色对应的字段映射关系,动态替换错误信息中的属性名。
  2. 保留 <ValidationSummary /> 的前提下,在表单提交验证完成后,手动遍历 EditContext 中的验证错误集合,用角色对应的字段名批量替换错误信息里的原生属性名。

内容的提问来源于stack exchange,提问作者John D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:39:04