使用jQuery get动态加载按钮后,部分视图没有得到验证
Partial view not getting validated after button click when dynamically loaded using jQuery get
我使用MVC4创建一个项目,在该项目中,我使用jQuery对话框显示弹出用户编辑数据。
当用户点击编辑动作链接它显示了一个弹出,其中包含表单来编辑用户的值。
<a href="#" class="edit" data-url="@Url.Action("EditResource", "Resources", new { id=item.EmployeeId})">Edit</a>
这是我的代码显示弹出到用户。
$('.edit').click(function () {
$.get($(this).data('url'), function (data) {
$('#dialogEdit').dialog({
modal: true,
autoResize: true,
resizable: true,
position: {
my: "center top",
at: "center top",
of: window
},
autoOpen: true,
bgiframe: true,
open: function () {
document.getElementById('dialogEdit').innerHTML = data;
},
close: function () {
document.getElementById('dialogEdit').innerHTML = "";
document.getElementById('dialogEdit').innerText = "";
$("#dialogEdit").empty().hide();
}
});
});
});
这是部分视图
@model PITCRoster.ViewModel.LookupTblUserViewModel
@using (Html.BeginForm("SaveChangesResources", "Resources"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
Html.RenderPartial("_CreateNewResource", Model.tblUser);
Html.RenderPartial("_LookUpDropDowns", Model.LookUpViewModel);
<br />
<input type="submit" value="Save"/>
}
_CreateNewResource.cshtml
@model PITCRoster.tblUser
<fieldset>
<legend>tblUser</legend>
<div class="editor-label">
@Html.LabelFor(model => model.UserId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.LastName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
</fieldset>
_lookupDropDowns.cshtml
@model PITCRoster.ViewModel.LookUpViewModel
@Html.LabelFor(model => model.SelectedLocation)
@Html.DropDownListFor(m => m.SelectedLocation, Model.LocationList, "-Please select-")
@Html.ValidationMessageFor(m => m.SelectedLocation)
@Html.LabelFor(m => m.SelectedStream)
@Html.DropDownListFor(m => m.SelectedStream, Model.StreamList, "-Please select-")
@Html.ValidationMessageFor(m => m.SelectedStream)
@Html.LabelFor(m => m.SelectedDepartment)
@Html.DropDownListFor(m => m.SelectedDepartment, Model.DepartmentList, "-Please select-")
@Html.ValidationMessageFor(m => m.SelectedDepartment)
@Html.LabelFor(m => m.SelectedGlobalLocation)
@Html.DropDownListFor(m => m.SelectedGlobalLocation, Model.GlobalLocationList, "-Please select-")
@Html.ValidationMessageFor(m => m.SelectedGlobalLocation)
我试过使用
$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse('form');
和一些更多的选项,但它没有帮助我解决问题。
你能帮我一下吗?谢谢你^_^
您需要确保在新内容添加到DOM后重新解析验证器
$('.edit').click(function () {
$.get($(this).data('url'), function (data) {
$('#dialogEdit').dialog({
....
open: function () {
document.getElementById('dialogEdit').innerHTML = data;
// reparse the validator here
var form = $('form');
form.data('validator', null);
$.validator.unobtrusive.parse(form);
},
....
});
});
});
相关文章:
- 如何在网格视图中验证asp.net文本框
- Kendo UI自定义验证不适用于模板和视图模型
- 根据模型验证,显示弹出消息或视图
- 如果在ASP.Net MVC视图中验证失败,请设置httppostedfilebase
- 部分视图中不显眼的客户端验证不起作用
- 使用主干验证.js在没有视图的模型上
- HTML5验证在backbone.js onclick路由到另一个视图中不起作用
- 角度视图(如果未经过身份验证)显示单个视图
- 如何使用javascript asp.net在网格视图的同一行选中复选框时验证网格视图中的文本框
- mvc4中所有视图的通用javascript验证
- 在主干模型/视图上处理更复杂的验证逻辑(必填字段等)的最佳方式
- 使用注释验证视图中的列表
- 在 OnChange 事件上使用 javascript 验证网格视图中的文本框(不起作用)
- 在网格视图中的复选框和单击按钮时的验证之间切换
- 为多个网格视图选中“验证网格视图”复选框
- javascript中的网格视图行验证
- BackboneJS:从视图提交表单时触发表单验证
- jsViews:在data-link中更新视图之前检查要验证的数据
- 在弹出的局部视图中验证
- 网格视图验证