为什么 JQuery Validation 会在失败时从不相关的下拉列表中清除值?

Why would JQuery Validation clear values from an unrelated dropdown on fail?

提问人:nick_b 提问时间:7/15/2023 更新时间:7/17/2023 访问量:9

问:

此 ASP.NET Core 7/Razor 页面项目使用 JQuery 验证和不显眼验证。相关页面有一个 [必填] 文本输入字段和 2 个下拉列表(这些列表未标记为 [必填])。这些列表在 GET 页上填充了模型的其余部分。可以按预期编辑每个字段并更改下拉值。

当我通过删除必填字段中的文本来强制验证失败时,会显示预期的错误消息 - 但是 2 个下拉列表已丢失其所有值并已恢复为默认文本。没有发生回发,这是我认为验证失败的正确行为,但 html 已更改。

验证失败前的 Html:

<div class="form-group">
    <label class="form-label" for="engagement_CoachingModelId">Coaching model</label>
    <select class="form-control" aria-required="true" id="engagement_CoachingModelId" name="engagement.CoachingModelId">
    <option value="">Please select coaching model</option>
    <option value="0">None</option>
    <option selected="selected" value="1">Model 1</option>
    <option value="3">Model 3</option>
    <option value="4">Model 4</option>
    </select>
</div>

验证失败后的 Html:

<div class="form-group">
     <label class="form-label" for="engagement_CoachingModelId">Coaching model</label>
     <select class="form-control" aria-required="true" id="engagement_CoachingModelId" name="engagement.CoachingModelId">
     <option value="">Please select coaching model</option>
     </select>
</div>

我在这里错过了什么?

jQuery asp.net 验证

评论


答:

0赞 nick_b 7/17/2023 #1

我做错了两件事:

首先,

<partial name="_ValidationScriptsPartial" /> 

标记位于布局文件中的 jQuery 脚本标记之前。我可以通过检查控制台错误来看到这一点。不知道为什么,但我仍然收到初始验证错误消息,但它随后正在进行回发,但是......

其次,隐藏代码中的 on post 方法名称错误,因此它正在回发,但我的方法没有捕获它。

修复这 2 个错误解决了问题。希望有一天这对其他人有用。