submit/validation 后,在 Blazor 表单中的 InputNumber 控件上设置 DisplayName 未在 ErrorMessage 中使用

Setting DisplayName on InputNumber control in Blazor form is NOT used in ErrorMessage upon submit/validation

在验证我的 CRUD 页面提交后...

<EditForm Model="CustomerData" OnValidSubmit="HandleValidSubmit" OnInvalidSubmit="HandleInvalidSubmit">
   <DataAnnotationsValidator />
   <ValidationSummary />

我得到这个错误值 0(零)——它不显示字段的“DisplayName”:

'ID_CUSTOMER的值必须大于等于1.

具有 DisplayName 的 InputNumber 控件是:

<InputNumber class="m-sm-0 pl-sm-1 py-sm-1 form-control" 
@bind-Value="CustomerData.ID_CUSTOMER" DisplayName="FCI Key" />

数据模型字段定义如下:

[Required(ErrorMessage = "'{0}' is required.")]
[Range(1, 9999, ErrorMessage = "'{0}'s value must be greater or equal to {1}.")]
public int ID_CUSTOMER { get; set; }

如您所见,错误消息显示模型绑定字段名称(ID_CUSTOMER)而不是显示名称(FCI 密钥).

我没有在模型中输入 [DisplayName...] 的原因是我可能会根据用户在应用程序中的角色使用不同的 DisplayName。

所以我想我的问题是...为什么 InputNumber“DisplayName”未用于验证 ErrorMessage {0} 替换?

谢谢...约翰

你可能误解了InputBase.DisplayName。此属性可以更改带有 InputBase 内置错误的错误消息字段名称。例如,InputNumber 必须是数字,InputDate 必须是日期。如果您不填写 number/date,则会生成带有 DisplayName 的错误消息。 InputBase.DisplayName无法对数据注释生效。此属性也支持 .net 5.

参考:

Display name support