程式碼
公用類別RefreshServe:System.Web.UI.Page
{
私有靜態中ILog FRESH_TICKET_NAME =「__RefreshTicketArray」;
私人隻讀取字串HIDDEN_FIELD_NAME =「__RefreshHiddenField」;
私人唯讀字串HIDDEN_PAGE_GUID =「__RefreshPageGuid」; 為真表示頁面刷新,假為正常提交
/// 摘要>
公共BOOL IsPageRefreshed
{
獲得
{
如果(的IsPostBack &&!CheckRefreshFlag())
{
log.Debug(“刷新了頁面“);
返回true;
}
其他
{
log.Debug (「正常提交」);
返回false;
}
}
///
/ param>的
保護覆蓋無效的OnPreRender(EventArgs的送)
{ base.OnPreRender(E);
UpdateRefreshFlag();
///
///更新標識,並在正常提交中刪除該次提交的時間,並生產當前新的時間
)
{
地的Cookie模式
//與
HttpCookie餅乾= GetRefreshTicket();
cookie.Values .Remove(pageGuid);
log.Debug(「目前清除的cookie的變體是:」+ pageGuid);
}
//目前提交時間保存至隱藏域
ClientScript.RegisterHiddenField(HIDDEN_FIELD_NAME,submitTime);
, cookie.Values.Add( pageGuid,submitTime);
log.Debug(「UpdateRefreshFlag中目前的Cookie中存在的記錄數為:」+ C. .Count;我++)
#endregion
}
///
///驗證是否有刷新
私人布林CheckRefreshFlag()
{
的HttpCookie餅乾= GetRefreshTicket 的HttpCookie餅乾= GetRefreshTicket ();
字串pageGuid = GetCurPageGuid();
布林標記;
與(pookie.Value [pageGuid]! = NULL)
標誌= cookie.Values [pageGuid] .IndexOf(GetCurSubmit1())> -1;
log.Debug( 「提交時間存在,可提交」);
其他
回傳標誌;
}
///
///有已儲存的提交時間,沒有新建,有回
/// 摘要>
/// 工作> {
#地區的Cookie模式,回值為曲奇
的HttpCookie cookie的;
{
餅乾=新的HttpCookie(REFRESH_TICKET_ );
{
餅乾= Request.Cookies時[REFRESH_TICKET_NAME] 餅乾= Request.Cookies, 「讀取已存在的餅乾,曲奇當前存在的記錄數為:”+ cookie.Values.Count +“具體有以下幾條:”);
log.Info (「餅乾[」+ cookie.Values.GetKey(I)+「]:」+ cookie.Values [I]);
} #endregion
}
///
///取得目前提交時間
/// 摘要>
/// 回報>
字串submitTime = Request.Params [HIDDEN_FIELD_NAME] ==空值? 「」:Request.Params [HIDDEN_FIELD_NAME]的ToString();
log.Debug(「執行GetCurSubmitTime:
}
///
///設定頁面唯一標識,透過的Guid標識來區分每個頁面自己的提交時間
/// 摘要>
私人字串SetCurPageGu 字串GUID;
若(的IsPostBack!)
{
如果(Request.Params [HIDDEN_PAGE_GUID] == NULL)
{
GUID = System.Guid.NewGuid()的ToString()。
否則
地}
否則
{
}
回傳GUID;
}
///
///
/// 摘要>
/// 0>
字串pageGuid = Request.Params [HIDDEN_PAGE_GUID] ==空值? 「無」:Request.Params [HIDDEN_PAGE_GUID]的ToString();
log.Debug(「執行GetCurPageGuid(
}
}
999999999999999999999999999999999999999999999999刷新判斷功能時新頁面只需繼承該類別就可,通過引用屬性IsPageRefreshed識別“為真表示刷新,假則是正常提交”,將數據庫的操作寫在
如果(!IsPageRefreshed)
{
數據庫操作
}