我在配置中启用了客户端验证,我还包括了适当的jquery文件进行验证,但每次提交时,页面都会发布到服务器,而无需首先进行客户端验证。我已经粘贴了在下面的源代码中生成的标记。它似乎正在生成数据验证消息。只是不知何故没有触发验证。
我正在使用Nuget上提供的BeginCollection库来构建我的动态表单。这可能是我的客户端验证不起作用的原因吗?
<input class="text-box single-line valid" data-val="true"
data-val-number="The field DaysAbsent must be a number."
data-val-required="The DaysAbsent field is required."
id="students_471abdc8-b190-42da-9f72-ed30a1e33b10__DaysAbsent"
name="students[471abdc8-b190-42da-9f72-ed30a1e33b10].DaysAbsent"
type="text" value="0">
我的web.config:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
_Layout.cshtml:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jqueryval")
@RenderSection("scripts", required: false)
BundleConfig.cs:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
您提到了动态表单,所以如果您正在动态加载输入,jquery.validate并不知道它们在那里。您必须"刷新"表单验证以验证新输入。
添加新输入后,使用此代码"刷新"表单的验证:
$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse($('form'));