尝试学习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" />
}
我不想在这里发帖,我已经阅读了一些相关的主题,但似乎无法解决我的问题,当我点击提交它的帖子/获取请求时。
答案 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>