在 ASP>NET 中使用 Updatepanel 控件刷新验证码

Refresh Captcha Code with Updatepanel control in ASP>NET

我的网站上有一个验证码。 有时需要把那张图片显示出来,但我不想刷新整个页面。 我以这种方式使用更新面板:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Label ID="lblmsg" runat="server" Font-Bold="True"
                    ForeColor="Red" Text=""></asp:Label>
                <asp:TextBox ID="txtimgcode" runat="server"></asp:TextBox>
                <asp:Image ID="Image1" runat="server" ImageUrl="~/CImage.aspx" />
                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Check" />


                <asp:Button ID="Button3" runat="server" Text="refresh" OnClick="Button3_Click" />
            </ContentTemplate>  
        </asp:UpdatePanel>

这是 Button3 后面的代码:

protected void Button3_Click(object sender, EventArgs e)
    {
        Image1.ImageUrl = "~/CImage.aspx";
    }

Button1 工作正常但是应该更改验证码图片的 Button3 不工作。

我是不是漏掉了什么?

此外,如果我想使用刷新图像而不是Button3,我应该使用什么控件?

您的代码没有任何问题 请检查“~/CImage.aspx”是否返回正确的值。我已经修改了你的代码 请检查:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
        <ContentTemplate>
            <asp:Label ID="lblmsg" runat="server" Font-Bold="True"
                ForeColor="Red" Text=""></asp:Label>
            <asp:TextBox ID="txtimgcode" runat="server"></asp:TextBox>
            <asp:Image Width="100" Height="100" ID="Image1" runat="server" ImageUrl="~/CImage.aspx" />
            <asp:Button ID="Button1" runat="server" Text="Check" />


            <asp:Button ID="Button3" OnClick="Button3_Click" runat="server" Text="refresh" />
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button3" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>


 protected void Button3_Click(object sender, EventArgs e)
{
    if (Image1.ImageUrl == "Koala.jpg")
    {
        Image1.ImageUrl = "Close.png";
    }
    else
    {
        Image1.ImageUrl = "Koala.jpg";
    }
}

图像可能在部分回发期间没有更新,因为浏览器没有意识到图像内容已经更改,因为它一遍又一遍地定位到同一页面。在这种情况下,添加查询字符串可能会有所帮助,需要将随机 id 作为查询字符串传递给验证码的 ImageUrl。

protected void Button3_Click(object sender, EventArgs e)
{
    Image1.ImageUrl = string.Format("~/CImage.aspx?img={0}", Guid.NewGuid());
}