亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

Asp.Net防止刷新重復提交數據的辦法

2024-07-10 13:17:07
字體:
來源:轉載
供稿:網友

在網上搜 一下,可以找到很多關于這方面的資料,其中有一篇是來自MSDN上的一種解決方法: ?url=/library/en-us/dnvs05/html/BedrockASPNET.asp 它是通過重新定義 System.Web.UI.Page 類來實現加載頁面時,是“刷新”、“后退”請求,還是正常請求,其他的頁面則繼承了自定義的這 個Page類。感覺他這個方法比較獨特,有例子可以下載,有興趣的可以研究研究。

網上最多的解決此類問題的方法就是不保存緩存,即提交后表單上的數據不會被瀏覽器的緩存保存,如果此時再遇到刷新或者后退請求時, 就會顯示“網頁已過期”,數據也就不會重復提交了,這就起到了阻止刷新重復提交的效果。

下面以簡單的提交一篇帖子為例,介紹禁用緩存防止刷新重復提交的方法,表單數據包括“標題”和“正文”兩個部分。

以下是該方法的代碼(post.aspx):

復制代碼 代碼如下:


//頁面加載

protected void Page_Load(object sender, EventArgs e)

{

   //可以在頁面加載時設置頁面的緩存為“SetNoStore()”,即無緩存

   Response.Cache.SetNoStore();

   //Session中存儲的變量“IsSubmit”是標記是否提交成功的

   if ((bool)Session["IsSubmit"])

   {

     //如果表單數據提交成功,就設“Session["IsSubmit"]”為false

     Session["IsSubmit"] = false;

     //顯示提交成功信息

     ShowMsg.Text = " * 提交成功!";

   }

   else

     //否則的話(沒有提交,或者是頁面刷新),不顯示任何信息

     ShowMsg.Text = "";

}

//提交按鈕(btnOK)單擊事件

protected void btnOK_Click(object sender, EventArgs e)

{

   if (txtTitle.Text.ToString().Trim() == "")

     //ShowMsg是用來顯示提示信息的

     ShowMsg.Text = " * 標題不能為空!";

  else if (txtText.Text.ToString().Trim() == "")

     ShowMsg.Text = " * 內容不能為空!";

  else

   {

     //這里是將數據提交到數據庫中,省略

     /*

     string sql = "insert into tab...values(...)";

     MyConn.ExecQuery(sql);

     */

     //提交成功后,設“Session["IsSubmit"]”為true

     Session["IsSubmit"] = true;

     //強制轉換頁面(不可少,否則刷新仍會重復提交,仍轉到本頁),

     通過頁面的轉換將緩存中的提交的數據都釋放了,即提交的標單數據不會被保存到緩存里,

     如果后退的話,將會出現該頁無法顯示

     Response.Redirect("post.aspx");

  }

}


上面這個方法非常簡單也很實用,推薦大家使用。

下面是我自己研究出來的另一種方法,該方法不同于“不保存緩存的方法”,它是讓瀏覽器保存所有頁面緩存的。該方法通過隨機碼的方式 來判斷是正常提交還是“刷新”或“后退”的。

首先(提交頁面是post.aspx)在 Session 中 增加變量 Rnd 用來存放隨機碼,同時在提交表單數據時不做處理,而是讓頁面轉到 post.aspx?r=x,這里“x”等于Session["Rnd"],這個時候在頁面加載時,通過判斷r的值和Session["Rnd"]的值是否相同,如果相同就處理提 交的數據,否則即可認為是“刷新”或者是“后退”操作了,最后再次付給Session["Rnd"]一個隨機碼。

以下是該方法代碼(post.aspx):

復制代碼 代碼如下:


//獲取隨機碼

public class MyRnd

{

   public static string Rnd()

   {

     //隨機碼是由 0-9 a-z A-Z 之間的數字或字母組成的

     //下面是生成的20位隨機碼

     //0..9 A..Z a..z

     //48-57 65-90 97-122

     string rst = "";

     Random rr = new Random();

     for (int i = 0; i < 20; i++)

     {

       int ir = 0;

       do

       {

         ir = rr.Next(123);

         if((ir >= 48) && (ir <= 57)) break;

         else if((ir >= 65) && (ir <= 90)) break;

         else if ((ir >= 97) && (ir <= 122)) break;

       }

       while (true);

       rst += ((char)ir).ToString();

       }

     return rst;

   }

}

//頁面加載

protected void Page_Load(object sender, EventArgs e)

{

   //獲取URL中請求的“r”值,如果“r”不存在則 r=""

   string r = "";

   if(Request.QueryString["r"] != null)

     r = Request.QueryString["r"].ToString().Trim();

   string t;

   //獲取 “Session” 中的 “Rnd” 值,用于和“r”比較

   t = Session["Rnd"].ToString().Trim();

   //如果“r=t”則為提交操作,即可對表單的數據進行處理

  if(r == t)

  {

     if (txtTitle.Text.ToString().Trim() == "")

       ShowMsg.Text = " * 標題不能為空!";

     else if (txtText.Text.ToString().Trim() == "")

       ShowMsg.Text = " * 內容不能為空!";

     else      {

       //這里是將數據提交到數據庫中,省略

       /*

       string sql = "insert into tab...values(...)";

       MyConn.ExecQuery(sql);

       */

       //提交成功后清空表單數據

       txtTitle.Text = "";

       txtText.Text = "";

       //顯示提交成功信息

       ShowMsg.Text = " * 提交成功!";

     }

  }

   //否則可以認為是“刷新”或者“后退”操作

   else

   {

       txtTitle.Text = "";

       txtText.Text = "";

  }

  //最后要重新獲得“Session["Rnd"]”的值,并將“btnOK.PostBackUrl”設為“Session["Rnd"]”的值

  Session["Rnd"] = MyRnd.Rnd();

  btnOK.PostBackUrl ="post.aspx?r=" + Session["Rnd"].ToString().Trim();

}

//這里提交按鈕(btnOK)單擊事件就不需要寫任何代碼了


通過這種方法,每次加載頁面時“Session["Rnd"]”都將得到一個新的值,而在刷新或后退時就不會得到相同的“r”和“t”值,數據也就 不會被重復提交,只有通過“btnOK”來提交的操作才會得到“r==t”,數據才會被提交處理的,通過判斷隨機碼的方式來阻止刷新重復提交就 可以實現了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情视频在线| 久久久免费av| 亚洲国产成人在线视频| 日韩av高清不卡| 51精品国产黑色丝袜高跟鞋| 日韩在线中文字幕| 欧美性猛交视频| 91精品国产综合久久香蕉的用户体验| 久久久久五月天| 国产91精品久久久久久| 久久影院免费观看| 亚洲精品美女免费| 一道本无吗dⅴd在线播放一区| 亚洲欧美在线免费观看| 欧美在线观看一区二区三区| 精品国产91久久久久久老师| 亚洲精品资源美女情侣酒店| 欧美日韩一二三四五区| 91在线无精精品一区二区| 日本亚洲欧美三级| 深夜福利亚洲导航| 96国产粉嫩美女| 中文字幕亚洲精品| 国产成人精品a视频一区www| 亚洲精品影视在线观看| 成人国内精品久久久久一区| 中文字幕欧美日韩精品| 久久久国产精品视频| 中日韩美女免费视频网站在线观看| 另类天堂视频在线观看| 久久久久久久久久久久久久久久久久av| 尤物tv国产一区| 日韩在线播放视频| 午夜精品蜜臀一区二区三区免费| 91精品久久久久久久久久入口| 国产精品老女人视频| 欧美亚洲国产另类| 91久久久久久久| 2019中文字幕全在线观看| 国模极品一区二区三区| 久久夜精品香蕉| 欧美在线日韩在线| 日韩av中文字幕在线免费观看| 成人av.网址在线网站| 欧美黄网免费在线观看| 国产精品h片在线播放| 日韩中文娱乐网| 97精品视频在线观看| 国产精品青草久久久久福利99| 久久精品99久久久久久久久| 日韩美女av在线免费观看| 国产精品久久久久久婷婷天堂| 亚洲人成77777在线观看网| 国产亚洲aⅴaaaaaa毛片| 日韩在线欧美在线| 91九色国产社区在线观看| 欧美日韩精品在线| 久久久精品999| 色妞一区二区三区| 国产精品一区二区久久| 国产精品69av| 国产不卡av在线免费观看| 色偷偷av亚洲男人的天堂| 国产精品女主播| 亚洲激情电影中文字幕| 久久伊人精品视频| 深夜福利一区二区| 久国内精品在线| 久久99久国产精品黄毛片入口| 久久久久亚洲精品成人网小说| 亚洲美女喷白浆| 国产精品69精品一区二区三区| 久久91精品国产91久久跳| 91精品国产91久久久久久吃药| 欧美日韩不卡合集视频| 国产精品美女久久久久久免费| 日韩欧美国产激情| 国产精品高潮呻吟视频| 国产成人精品免高潮在线观看| 亚洲一区二区在线播放| 亚洲天堂av女优| 日韩激情av在线免费观看| 91在线色戒在线| 日本久久久a级免费| 国产97在线|日韩| 久久免费成人精品视频| 日韩av片免费在线观看| 成人午夜在线视频一区| 一本色道久久综合狠狠躁篇的优点| 91久久久久久久| 久久999免费视频| 国模私拍一区二区三区| 精品视频久久久久久| 欧美国产日韩中文字幕在线| 欧美伊久线香蕉线新在线| 欧美日韩中文字幕在线| 亚洲国产日韩欧美在线99| 日韩一区二区三区xxxx| 成人免费视频xnxx.com| 另类专区欧美制服同性| 亚洲乱码一区av黑人高潮| 国产亚洲精品美女久久久久| 亚洲一区中文字幕在线观看| 日韩欧美在线视频免费观看| 亚洲人成五月天| 国产日韩在线观看av| 亚洲精品一区二三区不卡| 欧美中文字幕视频| 精品中文字幕久久久久久| 国产98色在线| 一个人www欧美| 欧美最猛性xxxxx免费| 国产成人在线一区二区| 91精品国产自产91精品| 日韩精品一区二区三区第95| 97色在线播放视频| 亚洲欧美综合另类中字| 狠狠久久五月精品中文字幕| 国产精品久久久久久av福利软件| 日本亚洲精品在线观看| 亚洲精品色婷婷福利天堂| 欧美在线www| 欧美精品免费在线| wwwwwwww亚洲| 欧美国产精品日韩| 国产精品第一第二| 国产97人人超碰caoprom| 中文字幕在线亚洲| 国产精品三级在线| 久久视频国产精品免费视频在线| 欧美日韩国产综合新一区| 国产v综合v亚洲欧美久久| 国产欧美一区二区三区在线| 91免费在线视频| 91精品国产综合久久久久久久久| 欧美日本精品在线| 91网站免费看| 日韩视频在线免费观看| 国产成人亚洲综合91精品| 成人自拍性视频| 欧美在线激情视频| 超碰日本道色综合久久综合| 国产精品视频26uuu| 欧美黄网免费在线观看| 911国产网站尤物在线观看| 亚洲精选一区二区| 国产日韩中文字幕在线| 亚洲欧美中文字幕在线一区| 久久久之久亚州精品露出| 亚洲国产精品电影| 亚洲xxxx做受欧美| 最近的2019中文字幕免费一页| 日韩欧美视频一区二区三区| 亚洲一二三在线| 不卡在线观看电视剧完整版| 国产精品va在线播放我和闺蜜| 色伦专区97中文字幕| 在线看国产精品| 欧美激情按摩在线| 精品久久久久久久久中文字幕| 国产亚洲精品久久久久久牛牛| 欧美第一黄网免费网站| 精品国产91乱高清在线观看| 91在线无精精品一区二区|