MVC 4客户端验证无效

时间:2013-05-29 10:45:48

标签: c# asp.net-mvc-4 razor

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

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

<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" />


}

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

6 个答案:

答案 0 :(得分:25)

感觉这应该有效,我认为你需要在validate.unobtrusive.min.js之前加载validate.min.js

答案 1 :(得分:10)

我遇到了类似的问题,唯一解决的问题是手动调用

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

在我按下提交按钮之前。

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

$(function () {
    $.validator.unobtrusive.parse($('form'));
});

答案 2 :(得分:3)

在您的页面中,您可以在页面底部找到这两行

请仔细阅读

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

答案 3 :(得分:2)

那是因为你没有在不引人注目的情况下加载jquery.validate.min.js。

答案 4 :(得分:0)

$('#divParent').load("url",
                     function () {
                     $.validator.unobtrusive.parse($('form'));}
                );

注意:如果您使用ajax调用在'div'中动态加载'form'或'PartialView',则需要这样做

答案 5 :(得分:0)

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

<script src="~/Scripts/jquery.validate.js"></script>