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

MudBlazor MudSelect验证:选中默认选项时触发校验错误

解决MudBlazor MudSelect选中默认选项触发验证错误的问题

你遇到的核心问题是:int类型的CoverageType默认值为0,[Required]属性对值类型无效(值类型永远不会为null),所以选中Value=0的选项时不会触发验证。要实现选中第一个选项时显示错误,需要调整验证规则,确保值必须在1-6范围内。

方案一:使用RangeAttribute(推荐)

直接替换实体类中的[Required]为范围验证,指定有效值为1到6:

[Range(1, 6, ErrorMessage = "A Coverage Type is Required")]
public int CoverageType { get; set; }

方案二:启用RegularExpressionAttribute

你注释掉的正则验证可以直接启用,它会匹配1-6的数字字符串(MudBlazor会自动将int值转为字符串进行匹配):

[RegularExpression("^[1-6]$", ErrorMessage = "A Coverage Type is Required")]
public int CoverageType { get; set; }

优化MudSelect代码(可选)

确保MudSelectItem的Value是正确的int类型,避免字符串转int的潜在问题,将Value="0"改为Value=@0:

<MudSelect T="int" Label="Choose Coverage Type" 
          AnchorOrigin="Origin.BottomCenter" Variant="Variant.Outlined"
          Margin="Margin.Dense" For="@(() => newLink.CoverageType)">
     <MudSelectItem Value=@0>No Coverage Selected</MudSelectItem>
     <MudSelectItem Value=@1>Auto</MudSelectItem>
     <MudSelectItem Value=@2>Cyber</MudSelectItem>
     <MudSelectItem Value=@3>D&O/EPL</MudSelectItem>
     <MudSelectItem Value=@4>General Liability</MudSelectItem>
     <MudSelectItem Value=@5>General Risk Management</MudSelectItem>
     <MudSelectItem Value=@6>Property</MudSelectItem>
</MudSelect>

验证触发逻辑

MudBlazor的For绑定会自动关联实体类的DataAnnotations验证,当你选中Value=0的选项时,CoverageType被设为0,此时范围或正则验证会判定值无效,自动在下拉框下方显示错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:25:01