我在尝试使不引人注目的 jquery 验证与通过 AJAX 调用动态加载的部分视图一起工作时遇到了问题。
我花了好几天试图让这个代码运行起来,但一无所获。
观点如下:
@model MvcApplication2.Models.test
@using (Html.BeginForm())
{
@Html.ValidationSummary(true);
<div id="res"></div>
<input id="submit" type="submit" value="submit" />
}
部分观点:
@model MvcApplication2.Models.test
@Html.TextAreaFor(m => m.MyProperty);
@Html.ValidationMessageFor(m => m.MyProperty);
<script type="text/javascript" >
$.validator.unobtrusive.parse(document);
</script>
模式:
public class test
{
[Required(ErrorMessage= "required field")]
public int MyProperty { get; set; }
}
总监:
public ActionResult GetView()
{
return PartialView("Test");
}
最后是 javascript:
$(doument).ready(function () {
$.ajax({
url: '/test/getview',
success: function (res) {
$("#res").html(res);
$.validator.unobtrusive.parse($("#res"));
}
});
$("#submit").click(function () {
if ($("form").valid()) {
alert('valid');
return true;
} else {
alert('not valid');
return false;
}
});
验证不起作用。即使我没有在文本框中填充任何信息,提交事件也会显示警报(‘有效’)。
但是,如果不是动态加载视图,而是使用 @Html.Partial("test", Model)
在主视图中呈现部分视图(并且不进行 AJAX 调用) ,那么验证就可以正常工作。
这可能是因为如果动态加载内容,DOM 中还不存在控件。但是我调用 $.validator.unobtrusive.parse($("#res"));
应该足够让验证器知道新加载的控件..。
有人能帮忙吗?