【发布时间】:2011-11-07 17:51:42
【问题描述】:
我正在用 ASP.NET C# 编写一个验证码验证程序。我面临的问题是在回发期间输入错误值时图像会刷新;但是当我将它们保留在更新面板中时,在部分回发期间不会刷新相同的图像。
aspx 来源
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Image ID="ImageCaptcha" runat="server" ImageUrl="~/BringImg.aspx" /><br />
<asp:TextBox ID="txtCaptcha" runat="server" ></asp:TextBox><br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit Project" OnClick="btnSubmit_Click"/>
</ContentTemplate>
</asp:UpdatePanel>
代码隐藏:
private System.Random rand = new System.Random();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.Session["Captcha"] = GenerateRandomCode();
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
string temp = this.Session["Captcha"].ToString();
if (string.Compare(temp, this.txtCaptcha.Text.Trim()) == 0)
{
// success logic
}
else
{
this.lblResult.Text = "Validation Text was not correct.";
this.Session["Captcha"] = GenerateRandomCode();
ImageCaptcha.ImageUrl = "~/BringImg.aspx";
ImageCaptcha.DataBind();
}
}
【问题讨论】:
-
坦率地说,如果你可以避免它,我会建议不要使用 ASP.NET AJAX 并改用 real AJAX。
-
您是否发送任何无缓存标头? Internet Explorer 是否设置为自动获取新版本的页面?如果是这样,将其设置为“工具-选项”下的“每次访问网页”,“浏览历史记录->设置”
-
我建议您设置 ajax nocache 选项,即:$.ajaxSetup({cache: false}});
标签: c# asp.net ajax updatepanel captcha