3

我在 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

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

可能是什么问题?

4

3 回答 3

1

我添加了指向 CDN 脚本http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js的链接 ,现在它可以工作了。

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

我尝试使用“Microsoft jQuery Unobtrusive Validation”或“Microsoft jQuery Unobtrusive Ajax”之类的 NuGet 包以及更多类似的包添加此脚本,但它没有解决问题,因此我添加了 CDN 脚本并且它有效。

于 2013-08-31T19:53:11.667 回答
0

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

@Html.ValidationSummary(false)
于 2013-08-20T18:56:06.903 回答
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"));
于 2016-05-07T00:33:54.680 回答