国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ASP.NET WebForm 檢測(cè)頁(yè)面刷新(Refresh)

2019-11-17 01:32:37
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

asp.net WebForm 檢測(cè)頁(yè)面刷新(Refresh)

本文是翻譯貼, 原文參見Detecting browser 'Refresh' from Code behind in C#

瀏覽器的"刷新"常會(huì)導(dǎo)致問(wèn)題, 特別是當(dāng)頁(yè)面和數(shù)據(jù)庫(kù)有交互的時(shí)候, 結(jié)果可能更糟. 因?yàn)? 每次頁(yè)面刷新, 如果沒有經(jīng)過(guò)代碼處理, 就會(huì)重復(fù)做一次數(shù)據(jù)庫(kù)操作.

這就可能導(dǎo)致數(shù)據(jù)的不一致, 甚至程序掛掉.

檢測(cè)"刷新"的一種方法就是用javaScript禁用掉F5和右擊事件. 但就算這么做了, 終端用戶還是有N種其它方法來(lái)刷新頁(yè)面的, 比如, Ctrl+R.

最好的防止"刷新"是代碼被重復(fù)調(diào)用的方法還是在服務(wù)器端做檢查, 并經(jīng)行處理.

下面的代碼放在page_load方法中, 它可以檢測(cè)"刷新":

bool IsPageRefresh = false;//this section of code checks if the page postback is due to genuine submit by user or by session["SessionId"] = ViewState["ViewStateId"].ToString();}else{    if (ViewState["ViewStateId"].ToString() != Session["SessionId"].ToString())    {        IsPageRefresh = true;    }    Session["SessionId"] = System.Guid.NewGuid().ToString();    ViewState["ViewStateId"] = Session["SessionId"].ToString();}     

(譯注: 它是怎么工作的? 自己試試看吧 -- 有時(shí)候當(dāng)搞清楚了問(wèn)題本身, 解決問(wèn)題的方法也就有了)

之后, 就可以在后臺(tái)代碼中用"IsPageRefresh"來(lái)判斷一個(gè)PostBack是來(lái)自用戶點(diǎn)擊按鈕還是瀏覽器的"刷新"啦.

希望對(duì)你有所幫助!


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 昂仁县| 谷城县| 资溪县| 阜平县| 南平市| 邢台市| 筠连县| 东阿县| 彩票| 盱眙县| 武鸣县| 科尔| 晋中市| 卓尼县| 西华县| 湘潭县| 饶平县| 海伦市| 河津市| 沁阳市| 龙游县| 平远县| 道真| 东源县| 江山市| 临潭县| 金阳县| 桃源县| 收藏| 霍城县| 鹰潭市| 本溪市| 长汀县| 邳州市| 万山特区| 堆龙德庆县| 八宿县| 黔南| 玉溪市| 黔江区| 颍上县|