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

主頁(yè) > 知識(shí)庫(kù) > ASP.NET防止頁(yè)面刷新的兩種解決方法小結(jié)

ASP.NET防止頁(yè)面刷新的兩種解決方法小結(jié)

熱門(mén)標(biāo)簽:怎樣給陜西地圖標(biāo)注顏色 400電話辦理信任翰諾科技 福州人工智能電銷(xiāo)機(jī)器人加盟 地圖標(biāo)注多少錢(qián)一張 電銷(xiāo)機(jī)器人 數(shù)據(jù) 云狐人工智能電話機(jī)器人 ai電銷(xiāo)機(jī)器人對(duì)貸款有幫助嗎 廣州銷(xiāo)售外呼系統(tǒng)定制 宿遷智能外呼系統(tǒng)排名

方法有二,總結(jié)如下:

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

當(dāng)有人想按后退時(shí)頁(yè)面已過(guò)期,效果就達(dá)到了

第二方法:
SubmitOncePage:解決刷新頁(yè)面造成的數(shù)據(jù)重復(fù)提交問(wèn)題(網(wǎng)上資料)

執(zhí)行過(guò)postback操作的web頁(yè)面在刷新的時(shí)候,瀏覽器會(huì)有“不重新發(fā)送信息,則無(wú)法刷新網(wǎng)頁(yè)”的提示,若剛剛執(zhí)行的恰好是往數(shù)據(jù)庫(kù)插入一條新記錄的操作,點(diǎn)[重試]的結(jié)果是插入了兩條重復(fù)的記錄,以前一直是用保存數(shù)據(jù)后重新轉(zhuǎn)向當(dāng)前頁(yè)面的方法解決,最近又找到了一個(gè)新的方法。

問(wèn)題分析

在System.Web.UI.Page類中,有一個(gè)名為ViewState屬性用以保存頁(yè)面的當(dāng)前視圖狀態(tài),觀察每個(gè)aspx頁(yè)面最終生成的html代碼可以發(fā)現(xiàn),其實(shí)就是向頁(yè)面添加了一個(gè)名為_(kāi)_VIEWSTATE的隱藏域,其value值就是頁(yè)面的當(dāng)前狀態(tài),每次執(zhí)行postback過(guò)后,該 value值都會(huì)發(fā)生變化,而刷新頁(yè)面則不會(huì)改變。

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

其實(shí)到這里問(wèn)題還沒(méi)有完全解決,具體說(shuō)來(lái)就是Session的鍵值問(wèn)題。假設(shè)我們將ViewState保存為 this.Session["myViewState"],如果一個(gè)用戶同時(shí)打開(kāi)兩個(gè)防刷新提交的頁(yè)面就亂套了,那針對(duì)頁(yè)面的url設(shè)置Session的鍵值呢?還是不行,因?yàn)橛脩粲锌赡茉趦蓚€(gè)窗口中打開(kāi)同一頁(yè)面,所以必須為每次打開(kāi)的頁(yè)面定義唯一的Session鍵值,并且該鍵值可以隨當(dāng)前頁(yè)面實(shí)例一起保存,參考ViewState的保存方式,我們直接向頁(yè)面添加一個(gè)隱藏域?qū)iT(mén)存放Session鍵值就可以了。

經(jīng)oop80和Edward.Net的提醒,為了盡可能地降低Session數(shù)據(jù)對(duì)服務(wù)器資源的占用量,現(xiàn)將上述方案略做調(diào)整,將ViewState利用md5加密后返回的32位字符串寫(xiě)入Session。

另外,由于本方法會(huì)生成額外的Session占用服務(wù)器資源,所以請(qǐng)?jiān)诒仨毐A舢?dāng)前頁(yè)面狀態(tài)的情況下使用,若無(wú)需保留當(dāng)前頁(yè)面狀態(tài),則在完成數(shù)據(jù)提交后直接重定向到當(dāng)前頁(yè)面即可。

SubmitOncePage

SubmitOncePage是針對(duì)上述分析寫(xiě)的一個(gè)繼承自System.Web.UI.Page的基類,需要防止刷新重復(fù)提交數(shù)據(jù)的頁(yè)面從該基類繼承,源碼如下:

復(fù)制代碼 代碼如下:

namespace myControl
{
/// summary>
/// 名稱:SubmitOncePage
/// 父類:System.Web.UI.Page
/// 描述:解決瀏覽器刷新造成的數(shù)據(jù)重復(fù)提交問(wèn)題的page擴(kuò)展類。
/// 示例: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");
}

}
}


測(cè)試項(xiàng)目

首先將SubmitOncePage類的源碼編譯成一個(gè)單獨(dú)的dll,然后進(jìn)行測(cè)試,步驟如下:

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

復(fù)制代碼 代碼如下:

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


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

/// summary>
/// 設(shè)計(jì)器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內(nèi)容。
/// /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運(yùn)行,在瀏覽器窗口中連續(xù)點(diǎn)擊幾次Button1,然后刷新幾次頁(yè)面,再點(diǎn)擊幾次Button1;

8、轉(zhuǎn)到測(cè)試項(xiàng)目對(duì)應(yīng)目錄下,打開(kāi)a.txt和b.txt文件,可看到if (!this.IsRefreshed) 的具體效果。

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

標(biāo)簽:大興安嶺 宜春 黃南 綿陽(yáng) 焦作 新疆 延安 曲靖

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET防止頁(yè)面刷新的兩種解決方法小結(jié)》,本文關(guān)鍵詞  ASP.NET,防止,頁(yè)面,刷,新的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET防止頁(yè)面刷新的兩種解決方法小結(jié)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于ASP.NET防止頁(yè)面刷新的兩種解決方法小結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日本大胆欧美人术艺术动态| 美洲天堂一区二卡三卡四卡视频| 欧美日韩国产精选| 久久成人麻豆午夜电影| 欧美激情一区二区三区| 99热99精品| 日韩国产欧美在线视频| 国产精品美女久久久久久久网站| 欧美亚洲国产一区在线观看网站| 久久99蜜桃精品| 亚洲男同性恋视频| 精品日产卡一卡二卡麻豆| 国产一区二区福利| 一区二区国产视频| 欧美精品一区二区高清在线观看 | 在线影院国内精品| 精品亚洲成a人在线观看| 亚洲另类春色国产| 欧美久久免费观看| 国产成人激情av| 日韩avvvv在线播放| 欧美zozo另类异族| 在线精品国精品国产尤物884a| 国产一区二区三区免费观看| 亚洲第一福利一区| 久久综合网色—综合色88| 欧美日韩一区二区在线视频| 高清久久久久久| 久久电影国产免费久久电影 | 亚洲1区2区3区4区| 国产精品三级av| 欧美视频自拍偷拍| 成人18视频在线播放| 国内精品自线一区二区三区视频| 亚洲图片激情小说| 国产亚洲一区二区三区在线观看| 91精品啪在线观看国产60岁| 色一情一乱一乱一91av| 国产精品伊人色| 久久电影国产免费久久电影| 肉肉av福利一精品导航| 一区二区三区日韩欧美精品| 中国av一区二区三区| 欧美精品久久一区二区三区| 色婷婷激情久久| 91一区二区三区在线观看| 美腿丝袜亚洲综合| 日韩国产一区二| 欧美96一区二区免费视频| 日韩精品亚洲一区二区三区免费| 一区二区高清视频在线观看| 一色屋精品亚洲香蕉网站| 中文字幕在线不卡一区二区三区 | 日韩亚洲欧美在线观看| 99久久精品国产一区二区三区| 成人丝袜18视频在线观看| 91在线丨porny丨国产| 色先锋aa成人| 3d动漫精品啪啪一区二区竹菊| 日韩视频永久免费| 国产无遮挡一区二区三区毛片日本| 国产视频一区二区三区在线观看| 欧美国产一区在线| 亚洲欧美日韩成人高清在线一区| 亚洲一区二区三区在线看| 奇米影视一区二区三区小说| 精品在线免费视频| 99热这里都是精品| 欧美精品粉嫩高潮一区二区| 欧美电影免费观看高清完整版在| 久久久久久久免费视频了| 中文字幕在线观看不卡| 性做久久久久久久免费看| 精品一区二区久久久| 99精品视频中文字幕| 欧美日韩精品是欧美日韩精品| 欧美成va人片在线观看| 自拍av一区二区三区| 亚洲二区在线观看| 国产成人免费在线观看| 色综合天天天天做夜夜夜夜做| 欧美日韩视频专区在线播放| 亚洲精品一区二区三区影院| 亚洲婷婷在线视频| 久久精品国产成人一区二区三区| 成人高清视频在线| 欧美一区二区成人| 亚洲人成网站色在线观看| 久久99日本精品| 91黄色免费观看| 久久综合九色欧美综合狠狠| 一级日本不卡的影视| 经典一区二区三区| 欧美午夜电影在线播放| 欧美激情在线免费观看| 日韩av一二三| 99riav一区二区三区| 久久中文娱乐网| 亚洲福利电影网| 91免费看视频| 久久精品人人爽人人爽| 日韩成人精品在线观看| 色视频一区二区| 欧美激情中文字幕一区二区| 蜜臀精品久久久久久蜜臀| 91日韩精品一区| 中文在线一区二区| 久久精品久久99精品久久| 欧美亚洲一区二区在线观看| 亚洲国产精品成人久久综合一区| 日本色综合中文字幕| 欧美在线观看18| 国产精品成人在线观看| 国产精品996| 日韩欧美一级二级| 日韩黄色一级片| 欧美午夜片在线观看| 亚洲欧美日韩国产成人精品影院| 国产jizzjizz一区二区| 精品美女在线观看| 蜜桃久久精品一区二区| 欧美日韩亚洲综合一区| 一区二区三区成人| 色婷婷av一区二区三区大白胸| 国产精品国产自产拍在线| 国产高清亚洲一区| 久久精品在线观看| 国产一区二区导航在线播放| 精品久久久久99| 美女精品一区二区| 日韩你懂的在线播放| 麻豆久久久久久| 欧美mv和日韩mv的网站| 精品一区二区三区久久久| 欧美大片在线观看| 九九精品一区二区| 久久综合狠狠综合久久综合88| 精品一区二区三区免费观看| 精品国产不卡一区二区三区| 蜜桃视频在线观看一区二区| 欧美一区二区三区在| 裸体在线国模精品偷拍| 欧美mv和日韩mv的网站| 国产精品自拍在线| 国产午夜精品一区二区| 成人福利视频在线看| 中文字幕成人网| 91蜜桃网址入口| 一区二区高清在线| 91精品国产综合久久香蕉麻豆| 奇米影视7777精品一区二区| 日韩精品中文字幕一区二区三区 | 亚洲国产精品影院| 欧美精品 国产精品| 裸体在线国模精品偷拍| 精品免费国产二区三区| 国产91在线观看| 亚洲色图另类专区| 在线播放/欧美激情| 国产一级精品在线| **性色生活片久久毛片| 欧美午夜精品电影| 国产在线精品一区二区不卡了| 国产日韩视频一区二区三区| 97久久人人超碰| 亚洲午夜视频在线| 欧美本精品男人aⅴ天堂| 9l国产精品久久久久麻豆| 亚洲成va人在线观看| 日韩欧美一级片| 99re成人精品视频| 日本视频中文字幕一区二区三区| 国产日产亚洲精品系列| 91福利视频久久久久| 久久成人免费网| 亚洲免费电影在线| 欧美大片拔萝卜| 91小视频在线免费看| 日韩av一二三| 亚洲视频在线一区二区| 欧美一激情一区二区三区| 国产成人无遮挡在线视频| 亚洲成人777| 国产精品久久久久9999吃药| 欧美久久久久久蜜桃| 丁香天五香天堂综合| 亚洲va国产va欧美va观看| 久久亚洲综合av| 欧美日韩国产精品自在自线| 国产精品夜夜嗨| 日本午夜一区二区| 亚洲婷婷在线视频| 国产亚洲欧美中文| 欧美日本国产视频| av在线播放不卡| 精品亚洲成a人在线观看| 亚洲电影在线播放| 国产精品久久福利| 精品动漫一区二区三区在线观看| 欧美午夜一区二区|