kub*_*003 10 asp.net-mvc asp.net-mvc-3
我正在尝试为动态创建的项目启用不显眼的javascript验证.javascript的问题已经在另一个SO问题中解决了,这不是这里的情况.
在这种情况下,动态创建项目只是克隆在主窗体之外生成的一个空项目.
问题是,如果我在html表单元素之外使用像TextBoxFor,CheckBoxFor,...这样的html帮助程序,data-val-required则不会生成验证工作所需的属性(例如.).
我已经检查了MVC源代码,如果FormContext为null ,则返回空属性列表.(这没有例外)
为什么?
Dar*_*rov 20
您可以手动伪造表单上下文.例如,如果你有一些不包含<form>元素的部分视图,并且使用AJAX调用它来重新生成一些输入元素,你可以这样做:
@model MyViewModel
@{
ViewContext.FormContext = new FormContext();
}
@Html.LabelFor(x => x.Foo)
@Html.EditorFor(x => x.Foo)
@Html.ValidationMessageFor(x => x.Foo)
Run Code Online (Sandbox Code Playgroud)
相应的输入元素现在将拥有data-*属性.但这可能还不够.如果你只是刷新(使用AJAX),那么只有部分<form>但不实际替换DOM调用中的表单元素是$.validator.unobtrusive.parse不够的.您需要删除与此元素关联的所有先前验证:
success: function(result) {
// we are replacing only a portion of the form
$('#somePartOfTheForm').html(result);
$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse('form');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |