解決的方法請參考以下網址:ASP.NET 如何避免頁面重新整理時重複送出
我這裡在再簡單註記一下解決流程:
1. 建立一個類別 BasePage.cs,首先繼承 System.Web.UI.Page,接著在其中新增幾個函式:
using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// BasePage 的摘要描述 /// </summary> public class BasePage : System.Web.UI.Page { public BasePage() { this.PreRender += new EventHandler(Page_PreRender); } /// <summary> /// 設置戳記 /// </summary> private void SetActionStamp() { Session["actionStamp"] = Server.UrlEncode(DateTime.Now.ToString()); } void Page_PreRender(object sender, EventArgs e) { if (!IsPostBack) { SetActionStamp(); } ClientScript.RegisterHiddenField("actionStamp", Session["actionStamp"].ToString()); } /// <summary> /// 取得值,指出網頁是否經由重新整理動作回傳 (PostBack) /// </summary> protected bool IsRefresh { get { if (HttpContext.Current.Request["actionStamp"] as string == Session["actionStamp"] as string) { SetActionStamp(); return false; } return true; } } }
2. 最後在要使用的頁面上繼承這個類別,例如:
public partial class Default : BasePage { ..... ..... }
3. 接著可以利用 this.IsRefresh 判斷這個頁面是否經由重新整理而來。
回目錄
回首頁
沒有留言 :
張貼留言