Валидаторы полей AJAX в веб-формах ASP NET - PullRequest
0 голосов
/ 04 июля 2018

У меня есть панель обновления с некоторыми текстовыми полями и валидаторами полей. Триггер ddlUserTypeId. Идея состоит в том, что если пользователь изменяет выбранное значение в раскрывающемся списке, FilteredTextBoxExtension будет включен / отключен в зависимости от выбранного значения. Это работает нормально, пока я не включу TextBoxExtenders.
После этого, даже если требования соблюдены, обратная передача невозможна.
Как я могу преодолеть эту проблему?
Мне нужно каждый раз запускать обратную передачу выпадающего списка.

HTML

<asp:UpdatePanel ID="pnlEnablePassword" runat="server" ChildrenAsTriggers="false">
    <ContentTemplate>
        <asp:TextBox ID="txtPassword" runat="server" TextMode="Password" CssClass="textBox" />
        <uc1:FilteredTextBoxExtender ID="txtPassword_FilteredTextBoxExtender" runat="server" Enabled="False" TargetControlID="txtPassword" FilterType="Numbers" />
        <asp:RequiredFieldValidator ID="valReqPassword" runat="server" ControlToValidate="txtPassword" Display="Dynamic" ErrorMessage="Requiered"/>

        <asp:TextBox ID="txtPasswordConfirm" runat="server" TextMode="Password" CssClass="textBox" />
        <uc1:FilteredTextBoxExtender ID="txtPasswordConfirm_FilteredTextBoxExtender" runat="server" Enabled="False" TargetControlID="txtPasswordConfirm" FilterType="Numbers" />
        <asp:RequiredFieldValidator ID="valReqPasswordConfirm" runat="server" ControlToValidate="txtPasswordConfirm" meta:resourcekey="valReqPasswordConfirm" Display="Dynamic" ErrorMessage="Requiered"/> 

        <asp:CompareValidator ID="valCompPasswordConfirm" runat="server" meta:resourcekey="valCompPasswordConfirm" Display="Dynamic" ControlToValidate="txtPasswordConfirm" ControlToCompare="txtPassword"/>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="chkEnablePassword" EventName="CheckedChanged" />
        <asp:AsyncPostBackTrigger ControlID="ddlUserTypeId" EventName="SelectedIndexChanged" />
    </Triggers>
</asp:UpdatePanel>

Event-Handler

protected void UserTypeChanged(Object sender, EventArgs e)
{
   txtPassword.Text = "";
   txtPasswordConfirm.Text = "";
   txtPassword.Enabled = chkEnablePassword.Checked;
   txtPasswordConfirm.Enabled = chkEnablePassword.Checked;
   valReqPassword.Enabled = chkEnablePassword.Checked;
   valReqPasswordConfirm.Enabled = chkEnablePassword.Checked;
   valCompPasswordConfirm.Enabled = chkEnablePassword.Checked;
}
...