【发布时间】:2013-05-13 13:31:36
【问题描述】:
单击LinkButton 时,我在图像控件中刷新图像而不刷新页面。为此,我使用了UpdatePanel 和AsyncPostBackTrigger。
它在 chrome 中完美运行。但不是在 IE 和 Mozilla 中。在 IE 和 Mozilla 上,当我单击链接按钮时,什么都没有发生。看起来很奇怪。对此有任何线索吗?
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="txtCaptchaInput" BorderStyle="Solid" Style="vertical-align: top" runat="server" Width="106px" BorderWidth="1px"></asp:TextBox>
<asp:Image ID="img_captcha" runat="server" Height="32px" ImageUrl="~/captchaJPEG.aspx" Width="108px" />
<asp:LinkButton ID="captcha_refresh" runat="server">Refresh Image</asp:LinkButton>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="captcha_refresh" />
</Triggers>
</asp:UpdatePanel>
CaptchaJPEG.aspx:页面加载
Dim captcha As New Captcha.CaptchaImage()
captcha.width = 150
captcha.height = 40
captcha.text = Me.Session("CaptchaText").ToString()
captcha.GenerateImage()
captcha.image.Save(Me.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
【问题讨论】:
-
检查你得到的 javascript 错误!链接按钮也没有调用任何功能!也许这就是问题所在?
-
@Aristos Mozilla 中没有 javascript 错误。并且链接按钮有一个单击事件,当单击 Mozilla 和 Chrome 中的链接按钮时,该事件会正确触发。问题是图像在除 mozilla 以外的浏览器中没有变化
-
那么图像可能会保留在缓存中,需要采取一些技巧来强制更新。现在我看得更清楚了,您可以使用页面发送图像。最好使用处理程序。
-
@Aristos 好的,我创建了一个 .Ashx 文件,我可以看到“Public Sub ProcessRequest(ByVal context As HttpContext)”但是我在 .Aspx 页面中生成图像的代码在页面加载中。我该把代码放在这个文件的什么地方?
-
你把它放在ProcessRequest上,同时设置缓存头
标签: asp.net .net vb.net asp.net-ajax updatepanel