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

时间:2015-12-14 08:07:56

标签: asp.net updatepanel captcha

我的网站上有验证码。 有时候需要改变那张照片,但我不希望整个页面都有所改变。 我以这种方式使用updatepanel:

<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,我应该使用哪些控件?

2 个答案:

答案 0 :(得分:0)

您的代码没有问题请检查“〜/ 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";
    }
}

答案 1 :(得分:0)

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

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