【问题标题】:Refresh Captcha Code with Updatepanel control in ASP>NET在 ASP>NET 中使用 Updatepanel 控件刷新验证码
【发布时间】:2015-12-14 08:07:55
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net updatepanel captcha


    【解决方案1】:

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

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

    【讨论】:

    • 当 Button3 不在 UpdatePanel 中时可以正常工作,但是当我把它放入时 UpdatePanel 不起作用
    • 当按钮位于更新面板中时,您是否尝试过我的解决方案?
    • yes.and this error on UpdatePanel1.Update(); line appearse : ""当 UpdateMode 设置为 Conditional 时,只能在 ID 为 'UpdatePanel1' 的 UpdatePanel 上调用 Update 方法。""
    • 然后删除该行并再次运行
    • 如果它工作正常,那么您可以将其标记为已接受:)。如果您是新用户,请查看How To
    【解决方案2】:

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

    【讨论】:

    • 谢谢,但它不起作用.. 我的意思是我不明白你的意思“Koala.jpg”和“Close.png”?我应该写什么来代替它们?
    • Koala.jpg 和 close.png 只是我复制到项目文件夹进行测试的图像名称。您可以将它们替换为您的图片网址。
    • 我已经按照你说的做了,但是还是不行。但是当我从 UpdatePanel 中取出 button3 时,它可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多