无错误时仍显示Validation Message 无验证配置字段在ValidationSummary报错问题
表单验证异常排查方案
异常1:无错误信息时Validation Message仍被展示
- 检查视图中
ValidationMessage/ValidationMessageFor的调用语法,确认未传入固定展示的第二个文本参数,标准调用写法为@Html.ValidationMessageFor(m => m.对应字段) - 排查自定义验证消息模板是否存在问题:若重写了验证消息的展示模板,需确认模板在错误内容为空时不会输出可见的DOM结构
- 校验前端验证脚本逻辑:确认没有自定义的JS代码强制触发验证消息展示,可通过控制台输出
$('目标字段选择器').validate().errorList确认当前字段是否真的无错误记录
异常2:无验证配置的字段在ValidationSummary中出现报错
- 优先排查字段类型:若字段为int、DateTime等非可空值类型,ASP.NET MVC默认会为这类字段添加隐式必填验证,即便未手动加
[Required]特性也会触发验证 - 检查模型的全局验证逻辑:若模型实现了
IValidatableObject接口,需确认Validate方法中的逻辑没有误将该字段加入错误返回集合 - 排查全局验证过滤器:确认没有自定义的全局验证过滤器,统一对所有字段添加了验证规则
- 如需关闭值类型的隐式必填验证,可在项目启动配置中添加代码:
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
内容的提问来源于stack exchange,提问作者Siva
相关产品推荐
相关产品推荐

