如何在几个ASP上显示/隐藏错误消息?. NET验证控件

How do I show/hide error-messages on several ASP.NET validation controls?

本文关键字:错误 隐藏 消息 控件 验证 NET 显示 ASP 几个      更新时间:2023-09-26

. NET验证控件,显示和隐藏错误消息的触发只与特定的验证控件有关。也就是说,如果该控件失败,则只显示该控件的错误信息。

但是我有两个下拉列表,它们应该紧随彼此的错误消息。只有当两者都有值或没有值时,它们才有效。

这是我的代码:

<script type="text/javascript" language="javascript">    
    function ValidateDDL(source, args) {
            var ddl_1 = $get('<%= DropDownList1.ClientID %>');
            var ddl_2 = $get('<%= DropDownList2.ClientID %>');
            var value_1 = ddl_1.options[ddlMailValue.selectedIndex].value;
            var value_2 = ddl_1.options[ddlMailValue.selectedIndex].value;
            if ((value_1== "" && value_2 != "") || (value_1 != "" && value_2 == "")) {
                    args.IsValid = false;
            }
            else {
                    args.IsValid = true;
            }
    }
</script>
<asp:DropDownList ID="DropDownList1" runat="server" CausesValidation="true"></asp:DropDownList>
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="DropDownList1" ValidateEmptyText="true" ClientValidationFunction="ValidateDDL" ></asp:CustomValidator>
<asp:DropDownList ID="DropDownList2" runat="server" CausesValidation="true"></asp:DropDownList>
<asp:CustomValidator ID="CustomValidator2" runat="server" ControlToValidate="DropDownList2" ValidateEmptyText="true" ClientValidationFunction="ValidateDDL" ></asp:CustomValidator>

但这意味着,当我改变第一个下拉列表(从有值到没有),它验证'false',因为第二个下拉列表还没有值。但是,当我将第二个下拉列表更改为也包含一个值时,第一个错误消息仍然可见,因为该控件未经过验证。当然,这只是视觉上的问题,因为当我尝试保存时,控件将验证"true"。

但仍…是否有一种方法可以获得第一个验证控件并将id设置为与第二个相同的状态(反之亦然)?

您是否考虑过仅在保存时使用验证器触发?而不是让它们在你输入数值时立即触发,你可以等到保存真正发生时再触发。只需将ValidationGroup分配给验证器和保存按钮,并且只在保存时进行验证。