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
相关产品推荐
相关产品推荐

