ASP NET WebForms中的AJAX字段验证器

时间:2018-07-04 07:19:12

标签: asp.net asp.net-ajax updatepanel postback

我有一个带有一些文本框和字段验证器的更新面板。触发器是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>

事件处理程序

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;
}

0 个答案:

没有答案