3

我在我的配置中启用了客户端验证,并且我还包括了适当的 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*"));
4

1 回答 1

0

你提到了动态表单,所以如果你动态加载你的输入 jquery.validate 不知道它们在那里。您必须“刷新”您的表单验证以验证您的新输入。

添加新输入后,使用此代码“刷新”表单的验证:

$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse($('form'));
于 2014-02-10T16:10:17.863 回答