校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > ASP.NET防止頁面刷新的兩種解決方法小結

ASP.NET防止頁面刷新的兩種解決方法小結

熱門標簽:怎樣給陜西地圖標注顏色 400電話辦理信任翰諾科技 福州人工智能電銷機器人加盟 地圖標注多少錢一張 電銷機器人 數據 云狐人工智能電話機器人 ai電銷機器人對貸款有幫助嗎 廣州銷售外呼系統定制 宿遷智能外呼系統排名

方法有二,總結如下:

第一方法:
直接在CS代碼里敲:
Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";

當有人想按后退時頁面已過期,效果就達到了

第二方法:
SubmitOncePage:解決刷新頁面造成的數據重復提交問題(網上資料)

執行過postback操作的web頁面在刷新的時候,瀏覽器會有“不重新發送信息,則無法刷新網頁”的提示,若剛剛執行的恰好是往數據庫插入一條新記錄的操作,點[重試]的結果是插入了兩條重復的記錄,以前一直是用保存數據后重新轉向當前頁面的方法解決,最近又找到了一個新的方法。

問題分析

在System.Web.UI.Page類中,有一個名為ViewState屬性用以保存頁面的當前視圖狀態,觀察每個aspx頁面最終生成的html代碼可以發現,其實就是向頁面添加了一個名為__VIEWSTATE的隱藏域,其value值就是頁面的當前狀態,每次執行postback過后,該 value值都會發生變化,而刷新頁面則不會改變。

針對這種情況,我們可以在頁面代碼執行的末尾將當前的ViewState寫到一個Session中,而在頁面加載時則判斷該Session值是否與當前 ViewState相等(其實Session值恰好是ViewState的前一狀態),若不等,則是正常的postback,若是相等則是瀏覽器刷新,這樣一來,只要在我們的數據插入代碼外嵌套一個if判斷就可以達到防止數據重復提交的目的了。

其實到這里問題還沒有完全解決,具體說來就是Session的鍵值問題。假設我們將ViewState保存為 this.Session["myViewState"],如果一個用戶同時打開兩個防刷新提交的頁面就亂套了,那針對頁面的url設置Session的鍵值呢?還是不行,因為用戶有可能在兩個窗口中打開同一頁面,所以必須為每次打開的頁面定義唯一的Session鍵值,并且該鍵值可以隨當前頁面實例一起保存,參考ViewState的保存方式,我們直接向頁面添加一個隱藏域專門存放Session鍵值就可以了。

經oop80和Edward.Net的提醒,為了盡可能地降低Session數據對服務器資源的占用量,現將上述方案略做調整,將ViewState利用md5加密后返回的32位字符串寫入Session。

另外,由于本方法會生成額外的Session占用服務器資源,所以請在必須保留當前頁面狀態的情況下使用,若無需保留當前頁面狀態,則在完成數據提交后直接重定向到當前頁面即可。

SubmitOncePage

SubmitOncePage是針對上述分析寫的一個繼承自System.Web.UI.Page的基類,需要防止刷新重復提交數據的頁面從該基類繼承,源碼如下:

復制代碼 代碼如下:

namespace myControl
{
/// summary>
/// 名稱:SubmitOncePage
/// 父類:System.Web.UI.Page
/// 描述:解決瀏覽器刷新造成的數據重復提交問題的page擴展類。
/// 示例:if (!this.IsRefreshed)
///{
/////具體代碼
///}
/// /summary>
public class SubmitOncePage:System.Web.UI.Page
{
private string _strSessionKey;
private string _hiddenfieldName;
private string _strLastViewstate;

public SubmitOncePage()
{
_hiddenfieldName = "__LastVIEWSTATE_SessionKey";
_strSessionKey = System.Guid.NewGuid().ToString();
_strLastViewstate = string.Empty;
}

public bool IsRefreshed
{
get
{
string str1 = GetSessinContent();
_strLastViewstate = str1;
string str2 = this.Session[GetSessinKey()] as string;
bool flag1 = (str1 != null) (str2 != null) (str1 == str2);
return flag1;
}
}

protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
string str = GetSessinKey();
this.Session[str] = _strLastViewstate;
this.RegisterHiddenField(_hiddenfieldName, str);
base.Render(writer);
}


private string GetSessinKey()
{
string str = this.Request.Form[_hiddenfieldName];
return (str == null) ? _strSessionKey : str;
}

private string GetSessinContent() {
string str = this.Request.Form["__VIEWSTATE"];
if (str == null) {
return null;
}
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");
}

}
}


測試項目

首先將SubmitOncePage類的源碼編譯成一個單獨的dll,然后進行測試,步驟如下:

1、新建一個asp.net web應用程序;
2、添加SubmitOncePage類對應的dll引用;
3、給webform1添加一個Label控件(Label1)和一個Button控件(Button1);
4、設置Label1的Text為0;
5、雙擊Button1轉到codebehind視圖;
6、修改類WebForm1的父類為SubmitOncePage并添加測試代碼,結果如下:

復制代碼 代碼如下:

public class WebForm1 : myControl.SubmitOncePage
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Button Button1;


#region Web 窗體設計器生成的代碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// summary>
/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
/// /summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
}
#endregion

private void Button1_Click(object sender, System.EventArgs e)
{
int i=int.Parse(Label1.Text)+1;
Label1.Text = i.ToString();
if (!this.IsRefreshed)
{
WriteFile("a.txt", i.ToString());
}
WriteFile("b.txt", i.ToString()); 


}

private void WriteFile(string strFileName,string strContent)
{
string str = this.Server.MapPath(strFileName); 
System.IO.StreamWriter sw = System.IO.File.AppendText(str);
sw.WriteLine(strContent);
sw.Flush();
sw.Close(); 
}
}


7、按F5運行,在瀏覽器窗口中連續點擊幾次Button1,然后刷新幾次頁面,再點擊幾次Button1;

8、轉到測試項目對應目錄下,打開a.txt和b.txt文件,可看到if (!this.IsRefreshed) 的具體效果。

您可能感興趣的文章:
  • asp防止刷新功能實現代碼
  • ASP.Net防止刷新自動觸發事件的解決方案
  • 用Asp如何實現防止網頁頻繁刷新?
  • ASP.Net中防止刷新自動觸發事件的解決方案
  • asp.net防止刷新時重復提交(可禁用工具條刷新按鈕)
  • Asp.Net防止刷新重復提交數據的辦法
  • php環境下利用session防止頁面重復刷新的具體實現
  • php防止網站被刷新的方法匯總
  • PHP防止刷新重復提交頁面的示例代碼
  • php采用session實現防止頁面重復刷新
  • ASP.NET中防止頁面刷新造成表單重復提交執行兩次操作

標簽:大興安嶺 宜春 黃南 綿陽 焦作 新疆 延安 曲靖

巨人網絡通訊聲明:本文標題《ASP.NET防止頁面刷新的兩種解決方法小結》,本文關鍵詞  ASP.NET,防止,頁面,刷,新的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET防止頁面刷新的兩種解決方法小結》相關的同類信息!
  • 本頁收集關于ASP.NET防止頁面刷新的兩種解決方法小結的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    91精品国产欧美一区二区 | 国产精品美女久久久久久2018 | 蜜臀av性久久久久av蜜臀妖精| 在线观看精品一区| 亚洲小说欧美激情另类| 欧美日韩亚洲高清一区二区| 日本女人一区二区三区| 日韩精品一区二区三区在线观看 | 国产欧美一区二区精品忘忧草| 大胆亚洲人体视频| 亚洲一区二区三区四区五区黄 | 欧美精品少妇一区二区三区| 另类小说色综合网站| 国产三级一区二区三区| 91国产免费观看| 激情文学综合网| 一区二区三区色| 26uuu亚洲综合色| 91精品91久久久中77777| 日本在线观看不卡视频| 国产精品久久久久久久久久免费看 | 国产精品电影一区二区| 欧美视频中文字幕| 国产精品 日产精品 欧美精品| |精品福利一区二区三区| 日韩视频中午一区| 日本韩国一区二区三区视频| 经典三级视频一区| 亚洲成国产人片在线观看| 国产欧美日韩三级| 日韩一二在线观看| 欧美专区在线观看一区| 国内精品免费在线观看| 视频一区在线播放| 亚洲一区二区三区四区在线观看 | 亚洲国产精品影院| 中文一区在线播放| 日韩欧美区一区二| 欧美羞羞免费网站| 色综合久久久网| 国产成人亚洲综合a∨婷婷图片| 天堂蜜桃91精品| 亚洲色图制服诱惑 | 精品噜噜噜噜久久久久久久久试看 | 99re这里只有精品6| 国内精品久久久久影院薰衣草 | 一区二区三区久久久| 国产农村妇女精品| 久久这里只精品最新地址| 欧美一区二区三区在线观看 | 亚洲第一成人在线| 亚洲一二三四区| 亚洲欧洲国产专区| 亚洲欧美激情一区二区| 中文字幕一区二区不卡| 综合色中文字幕| 国产精品国产精品国产专区不片| 精品国产露脸精彩对白 | 日韩女优电影在线观看| 欧美在线一区二区三区| 91日韩一区二区三区| jlzzjlzz亚洲女人18| 97久久精品人人爽人人爽蜜臀| 成人午夜免费视频| 91麻豆国产自产在线观看| 99re8在线精品视频免费播放| 97久久精品人人做人人爽 | 国产99久久久久久免费看农村| 九九久久精品视频| 国产精品亚洲午夜一区二区三区| 久久99国产精品久久99| 国产高清一区日本| 91丝袜美女网| 欧美日韩日日夜夜| 日韩免费观看高清完整版| 日韩欧美中文字幕一区| 精品成a人在线观看| 久久久综合视频| 日韩一区在线播放| 欧美日韩卡一卡二| 欧洲一区二区av| 精品免费国产二区三区| 青青草91视频| 秋霞午夜鲁丝一区二区老狼| 久久国产欧美日韩精品| 久久国产精品99久久久久久老狼| 人人精品人人爱| 国产激情偷乱视频一区二区三区| 成人精品视频一区二区三区尤物| 成人精品视频一区二区三区尤物| 欧美私人免费视频| 国产清纯美女被跳蛋高潮一区二区久久w | 欧美激情中文字幕| 一区二区久久久久| 激情国产一区二区| 欧亚洲嫩模精品一区三区| 91精品国产综合久久久久久久久久| 久久色.com| 日韩精品电影在线| 国产成人一区二区精品非洲| 欧美日韩高清不卡| 国产精品久久久久毛片软件| 天堂一区二区在线免费观看| 成人av免费观看| 精品国产三级电影在线观看| 亚洲精品成a人| 国产永久精品大片wwwapp| 欧美专区在线观看一区| 国产精品美女久久久久久2018| 日韩高清不卡一区二区| 91美女视频网站| 久久精品一区四区| 美国欧美日韩国产在线播放| 日本高清不卡aⅴ免费网站| xfplay精品久久| 亚洲成av人片在www色猫咪| 国产成人精品一区二区三区四区| 欧美一区二区三区电影| 亚洲mv在线观看| 91在线精品一区二区| 久久九九国产精品| 久久精品国产**网站演员| 91精品国产综合久久久蜜臀粉嫩 | 国产精品久久久爽爽爽麻豆色哟哟| 欧美aaaaa成人免费观看视频| 91免费观看国产| 国产精品久久久久精k8 | 国产成人午夜电影网| 欧美xxxxx裸体时装秀| 三级亚洲高清视频| 欧美日韩中文字幕一区二区| 国产精品成人免费在线| 成人av影视在线观看| 欧美激情一区二区三区不卡| 国产一区二区久久| 国产亚洲福利社区一区| 国产黑丝在线一区二区三区| 国产亚洲短视频| 99久久精品久久久久久清纯| 国产精品日韩成人| 91在线免费看| 五月激情综合网| 欧美一区二区福利视频| 久久精品国产在热久久| wwww国产精品欧美| 国产成人aaa| 亚洲欧美区自拍先锋| 欧美日韩免费一区二区三区| 天天操天天干天天综合网| 欧美一级免费观看| 国产精品66部| 亚洲一区二区视频在线观看| 欧美乱妇一区二区三区不卡视频| 日本不卡在线视频| 国产欧美一区二区三区沐欲| 色婷婷精品大在线视频| 丝袜亚洲精品中文字幕一区| 久久精品人人爽人人爽| 91麻豆免费观看| 久久99国产乱子伦精品免费| 日韩视频在线一区二区| 国产高清亚洲一区| 一区二区免费视频| 久久只精品国产| 欧美午夜电影网| 国产一区二区三区四| 亚洲卡通欧美制服中文| 精品蜜桃在线看| 91久久一区二区| 国产最新精品免费| 夜色激情一区二区| 日韩一级黄色片| 色综合久久中文综合久久97| 麻豆精品在线观看| 一区二区视频在线看| 欧美精品一区二区在线观看| 91福利社在线观看| 国产一区久久久| 亚洲国产精品久久不卡毛片| 久久影音资源网| 欧美一区二区久久| 欧美影视一区二区三区| 丁香一区二区三区| 九九九久久久精品| 无码av中文一区二区三区桃花岛| 国产精品久久三| 国产日韩欧美综合一区| 日韩欧美一二区| 欧美情侣在线播放| 欧亚一区二区三区| 91麻豆.com| 91尤物视频在线观看| 懂色av一区二区三区免费看| 久久99精品久久久久婷婷| 亚洲成av人片在www色猫咪| 亚洲精品欧美激情| 国产精品久久福利| 国产三级欧美三级| 欧美xxxxxxxx| 精品粉嫩aⅴ一区二区三区四区|