cki*_*tel 4 asp.net-mvc jquery-ui jquery-dialog unobtrusive-validation asp.net-mvc-3
我想在jQuery UI对话框中显示MVC3不引人注意的ValidationSummary错误.具体来说,我希望能够获得"现场" $('.validation-summary-errors').dialog(...);般的体验.也就是说,每当MVC3客户端验证(第一次)或更新(重复攻击).validation-summary-errors元素时,我希望结果出现在jQuery UI对话框中.
我目前有一些东西
@Using Html.BeginForm("Action", "Controller", FormMethod.Post, New With {.id = "MyForm"})
@Html.ValidationSummary()
...
$('#MyForm').submit(function () {
if (!$(this).valid()) {
$('.validation-summary-errors').dialog(...);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但这对我来说不合适.
感觉我应该能够挂钩到验证框架并通知验证已完成,并且现在显示错误摘要或更新错误.然后使用该事件,dialog()现在显示/更新的.validation-summary-errors元素.有这样的事吗?或者还有其他建议吗?
cki*_*tel 12
所以这就是我最终做到的方式.我没有找到太多文档,但做了足够的JS挖掘到达这一点.不确定我的感受.我知道我不再需要挂钩表单的submit事件并在验证调用上"加倍",所以这很好.看起来这个解决方案似乎感觉"神秘"(至少在我没有经验的眼中),我本来期望(并且仍在寻找)一种感觉更加饱经的解决方案.
$(function () {
// If there is an error element already (server side error), show it.
showValidationSummaryDialog();
// When the form validates, and there is an error element, show it
$('#MyForm').bind('invalid-form.validate', function (error, element) {
showValidationSummaryDialog();
}
}
function showValidationSummaryDialog() {
$('.validation-summary-errors').dialog({
title: 'Unable to Save',
close: function () {
$(this).dialog('destroy')
.prependTo($('#MyForm')); // jQuery moves the source element out of the DOM.
// We need to put it back in its place afterwards for validation to maintain its contents.
// TODO: Is there a better way?
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9754 次 |
| 最近记录: |