22

试图学习 ASP.net MVC 的基础知识,但不能完全理解为什么我的客户端验证不起作用。

我的两个 web.config 文件中都有这个(1 是全局 1 在视图文件夹中)

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

我的 _layout.cshtmlfile 中有这个

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js")
@Scripts.Render("~/Scripts/jquery.validate.min.js")

这是我正在测试注册的视图模型:

public class RegisterVM
    {
        [Required(ErrorMessage="Username Required")]
        public string username { get; set; }

        [RegularExpression(@"((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})")]
        [Required(ErrorMessage="Password Required")]
        public string password { get; set; }

        [Compare("password", ErrorMessage="Passwords do not match")]
        public string passwordConfirm { get; set; }
    }

这是我的html

@using(@Html.BeginForm()){

    @Html.LabelFor( model => model.username)
    @Html.EditorFor( model => model.username)
    @Html.ValidationMessageFor( model => model.username)<br />

    @Html.LabelFor( model => model.password)
    @Html.PasswordFor( model => model.password)
    @Html.ValidationMessageFor( model => model.password)<br />

    @Html.LabelFor( model => model.passwordConfirm)
    @Html.EditorFor( model => model.passwordConfirm)
    @Html.ValidationMessageFor( model => model.passwordConfirm)<br />

    <input type="submit" value="Register" />


}

不想在这里发帖,我在这里阅读了一些相关的主题,但似乎无法解决我的问题,当我点击提交时,它正在发出发布/获取请求。

4

6 回答 6

25

感觉这样应该可行,我认为您需要在 validate.unobtrusive.min.js 之前加载 validate.min.js

于 2013-05-29T10:56:14.653 回答
10

我有一个类似的问题,唯一解决它的是手动调用

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

在我按下提交按钮之前。

我终于把它放在文档就绪回调中。

$(function () {
    $.validator.unobtrusive.parse($('form'));
});
于 2014-09-26T15:09:03.773 回答
3

在您的页面中,页面底部有这两行

请仔细看

@section Scripts {
 @Scripts.Render("~/bundles/jqueryval")
}
于 2014-01-01T11:02:04.537 回答
2

那是因为您没有在不显眼的之前加载 jquery.validate.min.js。

于 2013-05-29T11:21:33.303 回答
0
$('#divParent').load("url",
                     function () {
                     $.validator.unobtrusive.parse($('form'));}
                );

注意:如果您使用 ajax 调用在 'div' 中动态加载 'form' 或 'PartialView',这是必需的

于 2015-10-13T12:37:19.120 回答
0

您只需在需要验证的每个页面上引用这些文件,我的朋友!

<script src="~/Scripts/jquery.validate.js"></script>    
于 2016-11-06T16:20:28.440 回答