jQuery不引人注目的验证不起作用

时间:2013-08-20 18:44:35

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

我在mvc 4中的表单没有在客户端进行验证。

验证仅在服务器端发生。

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <div class="editor-label">
        @Html.LabelFor(model => model.Name)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Name)
        @Html.ValidationMessageFor(model => model.Name)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Phone)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Phone)
        @Html.ValidationMessageFor(model => model.Phone)
    </div>

    <p>
        <input type="submit" value="Send" />
    </p>
}


@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

捆绑代码是:

 bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));

我还检查了web.config设置:

  <add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

我使用的模型是:

public class ContactUs
{
    [Required]
    public string Name { get; set; }

    [Required]
    public string Phone { get; set; }
}

该页面位于_Layout文件中。 脚本版本: jquery 2.0.3s和 jQuery Validation Plugin 1.11.1

所有脚本都在工作并存在于页面的源代码中。

可能是什么问题?

3 个答案:

答案 0 :(得分:1)

我添加了CDN脚本http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js的链接 现在它正在发挥作用。

在查看我的项目历史后,我发现由于某种原因,当我更新我的NuGet包时,它从我的项目中删除了这个脚本,然后我的客户端验证停止工作。

我尝试使用NuGet软件包添加此脚本,例如“Microsoft jQuery Unobtrusive Validation”或“Microsoft jQuery Unobtrusive Ajax”以及更多这样的软件包,它没有解决问题所以我添加了CDN脚本并且它有效。

答案 1 :(得分:0)

您可能需要告知验证摘要不要排除属性错误:

@Html.ValidationSummary(false)

答案 2 :(得分:0)

今天我遇到了这个问题,我已经在bundle / jqueryval上放了3个文件:

 bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                   "~/Scripts/jquery.unobtrusive*",
                   "~/Scripts/jquery.validate.min.js",
                   "~/Scripts/jquery.validate.unobtrusive.min.js"));