RequiredIf数据注解属性错误消息无法在字段下方显示的问题排查
自定义RequiredIf验证字段不显示错误的排查要点
核心问题:ValidationResult未绑定目标字段
你返回的ValidationResult必须明确指定错误所属的字段名称,否则MVC框架无法将错误关联到对应的ValidationMessage控件,只会把错误放到验证摘要里。
比如在IsValid方法中,返回结果时要传入字段名数组:return new ValidationResult("名称不能为空", new[] { nameof(Name) });如果你之前只传了错误消息,没指定字段名,就会出现你遇到的情况——摘要显示错误,字段下方不显示。
检查自定义属性的实现细节
确认你的RequiredIf属性在重写IsValid(或GetValidationResult)时,没有遗漏字段关联的逻辑。有些自定义验证的示例代码可能只关注了逻辑判断,忘了把错误绑定到具体字段。排除视图绑定问题
你的ValidationMessage写法@(() => Model.Name)是标准写法,但可以临时换成@Model.Name的表达式测试,确认视图没有绑定错误:<ValidationMessage For="@Model.Name" />验证控制器端的模型处理
确保在控制器中调用ModelState.IsValid前,没有手动修改过ModelState,比如误删了字段对应的错误条目,导致字段关联丢失。
内容的提问来源于stack exchange,提问作者Ivan Debono
相关产品推荐
相关产品推荐

