Ajax 使用 ASP.NET C# 验证码控制图像在 post 后退时间更改值

Ajax Captcha control image changing values at post back time using ASP.NET C#

Ajax 当 select 下拉列表中的任何值时,验证码控制图像更改值,使用 ASP.NET C# 自动 post 返回问题。当 select 下拉列表中的任何值时,不应更改验证码图像。我正在使用 ddl_years_SelectedIndexChanged 事件。下面是下拉列表和 ajax 验证码控制设计。

    <asp:UpdatePanel ID="UpdatePanel5" runat="server" UpdateMode="Always" ChildrenAsTriggers="true">
       <ContentTemplate>
  <asp:DropDownList ID="ddl_years" runat="server"    AutoPostBack="true" CssClass="Exp"
 OnSelectedIndexChanged="ddl_years_SelectedIndexChanged">
 <asp:ListItem Value="0">Year</asp:ListItem>
 <asp:ListItem Value="1">0</asp:ListItem>
 <asp:ListItem Value="2">1</asp:ListItem>
   <asp:ListItem Value="3">2</asp:ListItem>
     <asp:ListItem Value="4">3</asp:ListItem>
       </asp:DropDownList>
  </ContentTemplate>
</asp:UpdatePanel>


    <asp:UpdatePanel ID="UpdatePanel4" runat="server">
     <ContentTemplate>
     <cc1:CaptchaControl ID="CaptchaControl1" runat="server" CaptchaBackgroundNoise="None"
     CaptchaHeight="40" CaptchaLength="5" CaptchaLineNoise="None" CaptchaMaxTimeout="240" 
           CaptchaMinTimeout="5" FontColor="111, 109, 85" Width="325px" CaptchaWidth="300"
            CssClass="textarea_captha" />
      </ContentTemplate>
      </asp:UpdatePanel>

Ajax验证码控件设计:

 <cc1:CaptchaControl ID="CaptchaControl1" runat="server" CaptchaBackgroundNoise="None"
  CaptchaHeight="40" CaptchaLength="5" CaptchaLineNoise="None" CaptchaMaxTimeout="240" 
    CaptchaMinTimeout="5" FontColor="111, 109, 85" Width="325px" CaptchaWidth="300"  CssClass="textarea_captha" /> 

我不知道 CaptchaControl1 控件在做什么或它如何刷新图像,但我的直觉是您只需要 refresh/present 第一页上的图像加载...

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);

    if(!IsPostBack)
      CaptchaControl1.Method_that_refreshes_the_image();
}

这假设 CaptchaControl1 是一个 user/server 控件,并且验证码图像状态在回传中保存。

另一个选项是将 UpdatePanel4UpdateMode 属性 设置为 Conditional