asp.net mvc4客户端验证不起作用

时间:2013-02-04 21:26:53

标签: asp.net-mvc-4 jquery-validate unobtrusive-validation

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

1 个答案:

答案 0 :(得分:0)

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

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

$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse($('form'));