ASP.NET更新面板-即使CausesValidation = false,也会为AutoPostBack DropDownList触发必需的字段验证器

问题描述

我遇到一个问题,当附加的下拉列表在更改时进行部分回发时,必填字段验证器会在屏幕上闪烁。

本质上,页面是用户从第一个下拉列表中进行选择并填充第二个下拉列表的一种形式。然后,他们从第二个下拉列表中进行选择。然后,当用户选择了两者时,他们都点击了提交按钮,并验证了两个下拉菜单。

两个下拉菜单都在“提交”按钮使用的验证组中。我已将CausesValidation =“ false”添加到下拉列表中,但验证器仍会闪烁。下面的示例代码...

<form id="form1" runat="server">

    <asp:ScriptManager ID="MyAppScriptManager" runat="server"
        EnablePartialRendering="true"
        EnableCdn="true" />

        <div class="chat">

                        <asp:UpdatePanel ID="NewBookingUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server">
                            <ContentTemplate>

                                    <div id="FreelancerDiv" class="collapse show">
                                        <div class="card-body">
                                            <div class="form-group">
                                                <div class="input-group">
                                                    <asp:DropDownList ID="FreelancerDropDownList" runat="server" AutoPostBack="true"
                                                        CausesValidation="false"
                                                        class="custom-select form-control form-control-lg">
                                                        <asp:ListItem Value=" " Text="Choose the freelancer for your booking." />
                                                        <asp:ListItem Value="Good" Text="Good selection." />
                                                    </asp:DropDownList>
                                                </div>
                                                <asp:RequiredFieldValidator ID="FreelancerRequired" runat="server" Display="Dynamic"
                                                    ControlToValidate="FreelancerDropDownList"
                                                    ValidationGroup="RequestBookingValidationGroup"
                                                    ErrorMessage="&nbsp;Required&nbsp;"
                                                    CssClass="alert-danger" />
                                            </div>
                                        </div>
                                    </div>

                                 
                                    <div id="ServiceDiv" class="collapse show" runat="server">
                                        <div class="card-body">
                                            <div class="form-group">
                                                <div class="input-group">
                                                    <asp:DropDownList ID="ServiceDropDownList" runat="server" AutoPostBack="true"
                                                        CausesValidation="false"
                                                        class="custom-select form-control form-control-lg">
                                                        <asp:ListItem Value=" " Text="Choose the service for your booking." />
                                                        <asp:ListItem Value="Good" Text="Good selection." />
                                                    </asp:DropDownList>
                                                </div>
                                                <asp:RequiredFieldValidator ID="ServiceRequired" runat="server" Display="Dynamic"
                                                    ControlToValidate="ServiceDropDownList"
                                                    ValidationGroup="RequestBookingValidationGroup"
                                                    ErrorMessage="&nbsp;Required&nbsp;"
                                                    CssClass="alert-danger" />
                                            </div>
                                        </div>
                                    </div>
                               
                                <button id="RequestBooking" runat="server" class="btn btn-lg btn-primary btn-block" type="button" onserverclick="RequestBooking_Click" validationgroup="RequestBookingValidationGroup">
                                    Request Booking
                                </button>
                            </ContentTemplate>
                        </asp:UpdatePanel>

        </div>
</form>

解决方法

您可以在回发中(和/或在标记或页面加载事件中)启用或禁用(enabled = true或enabled = false)必需的字段验证器。相信默认情况下已启用它,这就是为什么它被触发的原因。

,

@JobesK感谢Enabled = false提示,它对您有所帮助:)

我禁用了标记中的验证器,然后在javascript中的“提交”按钮中启用了验证器...

                ValidatorEnable(document.getElementById('<%=FreelancerRequired.ClientID%>'),true);
                                        ValidatorEnable(document.getElementById('<%=ServiceRequired.ClientID%>'),true);
                                        Page_ClientValidate("RequestBookingValidationGroup");

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...