0

我在一个视图上有两个表单 - 每个表单都在不同的选项卡中。我在表单之外有一个按钮和一个验证摘要。

我想要实现的是,当用户单击该按钮时,我想验证这两个表单并在常见的验证摘要中显示错误。第一个表单包含一些模型级别的验证(使用数据注释)和一些使用 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;
    });
}
  1. 问题是我无法在验证摘要中看到错误消息 - 例如模型级别的错误消息和动态添加的验证规则的错误消息。

  2. validate() 方法返回的对象仅包含动态添加规则的错误消息,而不包含模型级别的验证消息。

4

0 回答 0