隐藏在ASP.Net的ValidationSummary冗余错误消息(Hide redundant

2019-08-03 05:10发布

我有接受两个输入值的asp.net页面 - 姓名和地址。 他们两人都是必填字段。 我已经使用所需的字段验证和验证摘要。

当如果发射两次,虽然该错误信息是冗余的用户没有输入这两个值的错误消息。 我需要即使有两个错误,只显示一个错误消息。

  1. 我们如何处理它使用jQuery?
  2. 我们如何处理它使用ASP.Net标记?

:我最初以为验证控件会发光HTML页面时负载本身,这样我可以用“查看源文件”,并做jQuery的HTML元素。 但事实并非如此。 它只是呈现如下

 <div id="vsumAll" class="validationsummary" style="display:none;"> </div>

结果

ASP.Net标记

<body>
<form id="form1" runat="server">
<div>
    <table cellpadding="5" cellspacing="5" width="100%">
        <tr>
            <td>
                <table border="0" align="center" cellpadding="0" cellspacing="0" width="100%">
                    <tr>
                        <td>
                            Name
                        </td>
                        <td>
                            <asp:TextBox runat="server" ID="txtName"></asp:TextBox>
                            <asp:RequiredFieldValidator runat="server" ID="reqWorkorderFormat" ControlToValidate="txtName"
                                Text="*" ErrorMessage="Fill all values!"></asp:RequiredFieldValidator>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Address
                        </td>
                        <td>
                            <asp:TextBox runat="server" ID="txtAddresss"></asp:TextBox>
                            <asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator1" ControlToValidate="txtAddresss"
                                Text="*" ErrorMessage="Fill all values!"></asp:RequiredFieldValidator>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <asp:Button runat="server" ID="btnSave" Text="Save" />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <asp:ValidationSummary runat="server" ID="vsumAll" DisplayMode="BulletList" CssClass="validationsummary" />
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</div>
</form>
</body>

Answer 1:

这是一个小的hackish,但它会工作:

添加以下JavaScript函数:

function submitValidate() {
    var isValid = Page_ClientValidate('');

    if (!isValid) {
        setTimeout("$('#vsumAll ul li:not(:first)').remove()", 5);
    }

    return isValid;
}

在您的提交按钮添加此:

<asp:Button runat="server" ID="btnSave" Text="Save" OnClientClick="submitValidate();"/>

和finaly,请确保您拥有ClientIDMode="Static"ValidationSummary

说明
它使用jQuery来删除所有,但第一li在ValidationSummary -这实际上是一个UnorderedList(如ul )。
我把它放在一个5毫秒setTimeout ,因为我们希望它后,才在ValidationSummary添加完所有的项目都运行ul
如果代码将只运行Page_ClientValidate这是执行客户端验证功能-失败。



文章来源: Hide redundant error message in ASP.Net ValidationSummary