Blazor自定义验证生效时ValidationMessage For不显示如何解决
核心原因
ValidationMessage For组件只会展示明确关联到对应属性的验证错误,你写的自定义验证特性返回错误时没有指定错误所属的属性,所以只有展示所有错误的ValidationSummary能正常显示内容,单属性的错误提示组件找不到对应信息就不会渲染。
修复方法
修改OtroCPValidation自定义验证类的返回逻辑,给ValidationResult构造函数传入第二个参数,指定错误关联的属性名即可:
public class OtroCPValidation : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { var domicilio = (Domicilio)validationContext.ObjectInstance; // 优化判断:覆盖空字符串、空白字符的无效场景 if (domicilio.Pais.Pais != "México" && string.IsNullOrWhiteSpace(domicilio.OtroCodigoPostal)) { // 第二个参数传入关联的属性名数组,和ValidationMessage绑定的属性对应即可 return new ValidationResult("Captura el código postal extranjero", new[] { nameof(Domicilio.OtroCodigoPostal) }); } return ValidationResult.Success; } }
如果你的自定义验证逻辑需要同时触发多个属性的错误提示,只需要在第二个参数的数组里添加对应属性的nameof值即可。
内容的提问来源于stack exchange,提问作者Omar Alejandro Rodrguez Mrquez
相关产品推荐
相关产品推荐

