ASP.NET Core 3中基类模型的jQuery Validation失效问题求助
修复ASP.NET Core MVC基类字段jQuery Validation不生效的问题
遇到这种基类验证规则不生效的情况,核心原因大多是客户端验证逻辑和输入控件的关联被破坏,结合你的代码来看,主要有几个关键修复点:
1. 修正TicketNo输入框的name属性错误
你给TicketNo的输入框手动设置了name="Employee",这直接覆盖了asp-for="TicketNo"自动生成的正确name值:
<!-- 错误写法 --> <input type="text" name="Employee" asp-for="TicketNo" autocomplete="off" class="form-control input-sm" placeholder="Ticket Number">
jQuery Validation是通过输入框的name属性匹配验证规则的,而ASP.NET Core根据模型注解生成的验证规则是针对name="TicketNo"的,两者不匹配就导致基类的Required验证无法触发。
改成下面的写法,去掉手动设置的name,让asp-for自动生成正确的属性:
<!-- 正确写法 --> <input type="text" asp-for="TicketNo" autocomplete="off" class="form-control input-sm" placeholder="Ticket Number">
2. 确保视图绑定的是派生类模型
确认你的Razor视图顶部声明的模型是UserRoleModel,这样ASP.NET Core才能正确识别基类和派生类的所有验证属性:
@model UserRoleModel
3. 修复AddDeleteFlag提交按钮的写法
asp-for是为输入控件设计的,不应该用于submit按钮。你需要通过name和value来传递AddDeleteFlag的值,这样后台才能正确接收对应指令:
<div> <input type="submit" name="AddDeleteFlag" value="AddRole" class="btn btn-primary btn-block"> <input type="submit" name="AddDeleteFlag" value="DeleteRole" class="btn btn-primary btn-block"> </div>
验证修复效果
完成以上修改后,刷新页面测试:
- 当TicketNo为空时,提交表单会触发Required验证,显示对应的错误提示
- 派生类的UserID、RoleName字段验证依然正常生效
本质上,jQuery Validation Unobtrusive依赖ASP.NET Core生成的data-val-*属性(对应模型注解)和输入框的name属性来关联验证逻辑,只要这两者匹配,基类和派生类的验证规则都会正常工作。
内容的提问来源于stack exchange,提问作者Parthi
相关产品推荐
相关产品推荐

