.NET Core 3.1自定义验证属性客户端验证不生效,无对应data-*属性
ASP.NET Core 3.1 自定义验证器未生成客户端data-*属性问题排查
- 确认
ExcludeCharAttribute是否正确应用到Prop1属性:框架仅会扫描公共实例属性上的验证特性,字段、静态属性、私有属性、标记了[ValidateNever]的属性都会被跳过,不会生成对应的验证属性。 - 检查
Prop1的表单控件生成逻辑:只有使用asp-forTagHelper、@Html.EditorFor/@Html.TextBoxFor等框架内置的辅助方法生成的表单元素,才会自动注入验证相关的data-*属性,手动编写的原生<input>标签不会自动生成该类属性。 - 排查
IClientValidatable接口的GetClientValidationRules方法实现:如果方法内添加了属性类型、属性名的过滤逻辑,可能存在Prop1命中过滤条件、未返回验证规则的情况,例如你仅为字符串类型返回验证规则但Prop1是数值类型,或误写了仅针对Prop2返回规则的逻辑。 - 检查全局验证过滤配置:如果在
Startup.cs的AddMvc/AddControllersWithViews配置中添加了全局验证跳过规则,恰好命中Prop1所属的DTO类或该属性本身,也会导致验证属性不生成。 - 若
Prop1是嵌套类的属性,确认视图中asp-for的绑定路径是否书写正确,路径错误会导致框架无法读取对应属性的验证特性。
内容的提问来源于stack exchange,提问作者Frédéric De Lène Mirouze
相关产品推荐
相关产品推荐

