亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

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

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

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

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

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

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

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

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

問題分析

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

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

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

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

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

SubmitOncePage

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

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

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

}
}


測試項目

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

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

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

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


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

/// summary>
/// 設(shè)計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內(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ù)點擊幾次Button1,然后刷新幾次頁面,再點擊幾次Button1;

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET防止頁面刷新的兩種解決方法小結(jié)》,本文關(guān)鍵詞  ASP.NET,防止,頁面,刷,新的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET防止頁面刷新的兩種解決方法小結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于ASP.NET防止頁面刷新的兩種解決方法小結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美另类videosbestsex| 天天做日日干| 黄视频网站在线免费观看| 精品视频在线看| 精品久久久久久中文字幕2017| 日本在线不卡免费视频一区| 国产成人精品综合在线| 91麻豆tv| 免费的黄色小视频| 日韩中文字幕一区二区不卡| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 九九九在线视频| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 久久99这里只有精品国产| 国产成人精品在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美日本国产| 九九干| 久久国产一久久高清| 色综合久久手机在线| 尤物视频网站在线观看| 国产一区二区精品久久91| 国产视频久久久久| 日韩欧美一及在线播放| 精品久久久久久中文字幕一区| 欧美一区二区三区在线观看| 999精品在线| 亚洲www美色| 国产视频久久久久| 久久99青青久久99久久| 久久99青青久久99久久| 国产一区二区精品久久| 沈樵在线观看福利| 久久成人性色生活片| 国产成人啪精品视频免费软件| 国产韩国精品一区二区三区| 国产视频一区二区在线播放| 日韩一级黄色大片| 国产激情视频在线观看| 日韩女人做爰大片| 国产成人精品综合在线| 国产激情一区二区三区| 精品在线视频播放| 日本特黄特色aaa大片免费| 成人免费一级毛片在线播放视频| 亚洲第一视频在线播放| 国产精品1024永久免费视频 | 精品视频在线观看一区二区三区| 亚欧成人乱码一区二区| 免费一级片在线| 午夜欧美成人香蕉剧场| 国产不卡在线看| 九九九在线视频| 成人免费观看男女羞羞视频| 欧美激情中文字幕一区二区| 欧美另类videosbestsex| 国产视频一区二区在线观看| 久久久久久久免费视频| 国产一区二区高清视频| 国产成人啪精品视频免费软件| 国产原创视频在线| 免费一级片在线| 欧美另类videosbestsex视频 | 国产视频网站在线观看| 国产国语在线播放视频| 国产一区二区高清视频| 99色精品| 免费的黄色小视频| 欧美1卡一卡二卡三新区| 国产网站在线| 精品视频一区二区三区免费| 欧美另类videosbestsex久久| 成人av在线播放| 99热视热频这里只有精品| 日韩在线观看免费完整版视频| 日韩av东京社区男人的天堂| a级毛片免费观看网站| 亚洲天堂一区二区三区四区| 99久久精品国产免费| 成人高清免费| 欧美国产日韩精品| 青青久久精品国产免费看| 精品国产香蕉在线播出| 日韩字幕在线| 久久久久久久免费视频| 成人在激情在线视频| 日本在线不卡视频| 亚洲精品久久久中文字| 午夜欧美成人香蕉剧场| 国产成人啪精品视频免费软件| 精品视频在线观看视频免费视频| 成人免费高清视频| 国产一区免费在线观看| 999精品影视在线观看| 欧美激情在线精品video| 欧美电影免费| 久久99爰这里有精品国产| 精品国产亚一区二区三区| a级黄色毛片免费播放视频| 亚洲精品久久久中文字| 久久国产精品永久免费网站| 91麻豆国产| 欧美一区二区三区性| 欧美电影免费| 国产一区二区精品| 国产韩国精品一区二区三区| 国产一区二区精品久久91| 国产亚洲精品aaa大片| 成人免费一级纶理片| 九九久久99| 黄视频网站免费| 国产a视频| 99色吧| 国产a视频| 青青久久精品| 久久国产精品只做精品| a级黄色毛片免费播放视频| 成人在激情在线视频| 日韩免费在线| 亚洲wwwwww| 国产精品免费久久| 精品视频在线看 | 色综合久久天天综线观看| 999久久66久6只有精品| 青青久热| 青草国产在线| 色综合久久天天综合| 欧美另类videosbestsex高清| 成人免费网站久久久| 青青青草视频在线观看| 精品久久久久久中文| 精品国产一区二区三区久久久蜜臀| 国产伦精品一区二区三区无广告| 日韩专区亚洲综合久久| 你懂的福利视频| 黄色免费三级| 欧美18性精品| 精品国产一区二区三区免费| 成人免费福利片在线观看| 精品毛片视频| 日本伦理网站| 97视频免费在线观看| 欧美另类videosbestsex久久| 国产不卡福利| 精品视频在线看 | 国产不卡在线看| 在线观看成人网| 青青久久精品国产免费看| 成人a级高清视频在线观看| 国产精品12| 国产一区二区精品久| 日本免费区| 日韩欧美一及在线播放| 国产成人啪精品| 日韩av成人| 99久久精品国产麻豆| 999精品在线| 国产一区二区精品久| 国产a视频| 成人免费网站久久久| 欧美激情一区二区三区视频高清| 99热精品在线| 一级毛片视频播放| 久久国产精品永久免费网站| 一级女性大黄生活片免费| 日韩专区第一页| 成人免费高清视频| 亚欧视频在线| 精品视频免费观看| 天堂网中文在线| 亚洲天堂在线播放| 一级毛片视频在线观看| 久久久成人网| 日日爽天天| 九九干| 久久国产精品只做精品| 午夜精品国产自在现线拍| 美女免费精品视频在线观看| 国产高清在线精品一区二区| 成人影院久久久久久影院| 韩国三级视频在线观看| 尤物视频网站在线观看| 深夜做爰性大片中文| 精品视频在线看| 国产伦精品一区二区三区无广告| 亚洲精品影院久久久久久| 久久99这里只有精品国产| 欧美另类videosbestsex| 成人影视在线播放| 精品国产三级a| 精品久久久久久免费影院| 国产高清在线精品一区a| 毛片高清| 国产韩国精品一区二区三区| a级精品九九九大片免费看| 久久国产精品只做精品| 久久99爰这里有精品国产| 欧美爱色| 亚欧成人毛片一区二区三区四区| 国产不卡高清在线观看视频|