我在一个视图上有两个表单 - 每个表单都在不同的选项卡中。我在表单之外有一个按钮和一个验证摘要。
我想要实现的是,当用户单击该按钮时,我想验证这两个表单并在常见的验证摘要中显示错误。第一个表单包含一些模型级别的验证(使用数据注释)和一些使用 Jquery 验证插件的规则动态添加的验证。第二种形式包含所有使用 Jquery Validation 插件的规则动态添加的验证。动态添加验证规则的原因是这些验证是有条件的 - 在某些单选按钮选择等时添加和删除。
以下是 chtml 的部分内容:
@Html.ValidationSummary(false, "Please correct the following errors:")
<div class="tabbable">
<ul id="ulTabs" class="nav nav-tabs">
<li class="active"><a href="#tab1" data-toggle="tab">Tab 1</a></li>
<li class="hidden"><a href="#tab2" data-toggle="tab">Tab 2</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="tab1">
<form id="form1" action="#">
...
</form>
</div>
<div class="tab-pane fade in active" id="tab2">
<form id="form2" action="#">
...
</form>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span4">
<button id="btnSave" type="button" class="btn btn-success">Save as a Draft</button>
</div>
<div class="span4">
<button id="btnSubmit" type="button" class="btn btn-primary">Submit</button>
</div>
</div>
这里的脚本部分:
$(function () {
SaveAsADraftButtonInitialization();
});
function SaveAsADraftButtonInitialization() {
$("#btnSave").click(function () {
var validator = $('#form1, #form2').validate();
validator.form();
var formSerializedData = $('#form1, #form2').serialize();
if ($("#form1, #form2").valid()) {
$.ajax({
type: "POST",
url: '@Url.Action("ActionMethodName", "ControllerName")',
data: formSerializedData,
success: function (data) {
}
});
}
return false;
});
}
问题是我无法在验证摘要中看到错误消息 - 例如模型级别的错误消息和动态添加的验证规则的错误消息。
validate() 方法返回的对象仅包含动态添加规则的错误消息,而不包含模型级别的验证消息。