[英]ImageURL doesn't work inside Update Panel
我在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();
}
}
我猜你的〜/ BringImg.aspx頁面正在將其內容類型設置為圖像,並根據該會話值生成驗證碼圖像。 在部分回發過程中,圖像可能未更新,因為瀏覽器沒有意識到圖像內容已更改。 有幾種讓瀏覽器知道圖像已更改的方法,但是最容易測試的方法之一是將無意義的查詢字符串(每個圖像不同)應用於驗證碼的ImageUrl。
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 = string.Format("~/BringImg.aspx?refresh={0}", Guid.NewGuid());
ImageCaptcha.DataBind(); //This isn't necessary
}
}
我完全同意@Aren的上述評論。 我已經使用了更新面板4年了,看到它有時會做所有奇怪的事情。 使用Jquery ajax而不是您可以透明地看到發生了什么,並且IMO的速度也更快。
這聽起來像一個緩存問題。 確保最終圖像具有url的隨機值。 這樣,它將不會使用圖像的緩存版本。 使用Firebug在“ Net”面板中查看GET請求,並查看其是否正在下載最新映像。
不知道這行是什么意思。 執行后將imageurl設置為什么。
ImageCaptcha.ImageUrl = "~/BringImg.aspx";
嘗試將更新面板更新模式設置為“有條件”,並在綁定驗證碼后更新更新面板。
UpdatePanel1.Update();
希望這可能有用。
有什么理由不使用Recaptcha嗎? 我保證它是一個更好的解決方案,它是免費的。 http://www.google.com/recaptcha/whyrecaptcha
上面的代碼在會話中使用兩個不同的值-這是故意的還是問題的根源?:
驗證碼和CaptchaImageTest
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.