我有问题试图让不显眼的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;
}
});
验证不起作用。即使我没有在texbox中填写任何信息,提交事件也会显示警报('有效')。但是,如果不是动态加载视图,而是使用@Html.Partial("test", Model)
在主视图中呈现局部视图(并且我不执行AJAX调用),那么验证工作得很好。
这可能是因为如果我动态加载内容,DOM中不存在控件。但我打电话给$.validator.unobtrusive.parse($("#res"));
这应该足以让验证器了解新加载的控件...
任何人都可以帮忙吗?
请注意,'unobtrusive.parse'函数将选择器作为参数,而不是元素。 – Fred 2016-04-12 13:17:03
我也有同样的问题,但在mvc 2.我一步一步地通过:http://weblogs.asp.net/imranbaloch/archive/2010/07/11/asp-net-mvc-client- side-validation-with-dynamic-contents.aspx这也可能对你有所帮助。 http://weblogs.asp.net/imranbaloch/archive/2011/03/05/unobtrusive-client-side-validation-with-dynamic-contents-in-asp-net-mvc.aspx希望这个帮助:) – 2013-06-03 09:38:05