五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > EasyTools---CheckRepost控件(防止重復提交控件)

EasyTools---CheckRepost控件(防止重復提交控件)

文章來源:365jz.com     點擊數(shù):286    更新時間:2009-09-15 10:09   參與評論
您是否遇過這樣的問題?無緣無故的在數(shù)據(jù)庫出現(xiàn)了兩條一樣的數(shù)據(jù)。如果有遇過的話,你覺得是什么原因導致的呢?在這里我告訴你一個這樣的場景,相信你也有過這樣的經(jīng)驗:用戶點擊一個提交按鈕,此時頁面由于網(wǎng)絡或服務器繁忙原因,導致響應不過來用戶的請求。這時在用戶看到的這樣一翻情景,點擊了沒反映,心急點的用戶可能會狂點,這樣,如果數(shù)據(jù)庫或服務端沒有好鎖的控制時,就會導致插入兩條數(shù)據(jù)。

那么解決方案該怎么做呢?一般的做法是通過驗證碼,但驗證碼要用戶輸入數(shù)據(jù),用戶體驗不好。但根據(jù)這個原理,我們可以做稍微的改造,就能達到目的,下面是我的做法:

首先在頁面加載的時候,生成一個隨機數(shù),并保存在session里面,同時賦值給一個hidden控件。代碼如下:

 1         protected override void OnInit(EventArgs e)
 2         {
 3             
 4             if (Page.IsPostBack)
 5             {
 6                 if (hc.Session[SessionKey] != null)
 7                 {
 8                     isrepost = !hc.Session[SessionKey].Equals(MyConvert.PToInt32(this.ClientID, 0));
 9                 }
10             }
11             Random rd = new Random();
12             hc.Session[SessionKey] = rd.Next(999999);
13         }

上面的代碼生成隨機數(shù),保存Session,然后在Render事件里面賦值。

1        protected override void Render(HtmlTextWriter output)
2        {
3            this.Value = hc.Session[SessionKey].ToString();
4            base.Render(output);
5        }

這樣控件就完成了。
本控件繼承了HiddenField控件。
這個控件有兩個自定義屬性:SessionKey:控件session的鍵值;IsRepost:布爾型,true為重復提交了,反之正常操作。

控件拖到界面后調(diào)用也很方便。
1     protected void Button1_Click(object sender, EventArgs e)
2     {
3         if (CheckRepost1.IsRepost)
4         {
5             Response.Write("<b>您太心急啦,連續(xù)點擊了兩次按鈕,造成重復提交!^_^</b><br>");
6         }
7         System.Threading.Thread.Sleep(4000);
8     }

下面附上在線的EasyTools----CheckRepost使用例子  演示    下載例子    下載EasyTools.dll
Tag標簽: 控件,EasyTools

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點擊進入論壇

發(fā)表評論 (286人查看0條評論)
請自覺遵守互聯(lián)網(wǎng)相關的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學習

業(yè)務咨詢

· 技術支持
· 服務時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權所有 鄂ICP備17013400號