You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JQuery Validation验证失败时为何清空无关下拉列表值?

问题原因分析

这种客户端验证失败后下拉列表选项丢失的情况,通常由以下几种原因导致:

1. 模型属性可空性配置问题

你提到下拉列表未标记[Required],但生成的HTML里出现了aria-required="true",这说明ASP.NET Core的Tag Helper默认将该字段识别为必填项。大概率是你的模型中CoachingModelId是非可空值类型(比如int),而非可空类型(int?)。

对于非可空值类型,即使没有手动添加[Required]属性,框架会自动将其视为必填项,Unobtrusive Validation会据此生成客户端验证规则。当表单验证失败时,部分客户端逻辑可能错误地重置了下拉列表的选项。

2. 自定义验证脚本的误操作

如果你的页面中添加了自定义的客户端验证回调(比如绑定了invalid、validate等事件的处理函数),可能在处理必填字段的验证错误时,不小心修改了下拉列表的DOM结构——比如调用empty()之类的方法清空了选项。

3. 验证库版本不兼容

ASP.NET Core 7对JQuery Validation和Unobtrusive Validation的版本有特定要求,如果使用的版本不匹配(比如JQuery Validation版本过高或过低),可能触发客户端验证逻辑的BUG,导致表单元素的DOM被意外修改。

4. 其他DOM操作冲突

如果页面中存在其他异步操作(比如定时加载数据的脚本、其他表单的AJAX提交逻辑),可能在验证失败的同时,这些脚本意外修改了当前表单的下拉列表元素。


内容的提问来源于stack exchange,提问作者nick_b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 20:34:54