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

首頁 > 編程 > .NET > 正文

深入理解__doPostBack 客戶端調用服務端事件

2024-07-10 13:21:53
字體:
來源:轉載
供稿:網友
在我的隨筆《Page,你是怎樣處理回發事件的?》中曾提出一個疑問,如何得到引起頁面PostBack的控件?通過閱讀Page類的源碼,誤打誤撞,無意中看到了__EVENTTARGET和__EVENTARGUMENT這兩個常量的定義,并通過調試分析頁面,知道了通過Request.Form[“__EVENTTARGET”]可以獲取到觸發頁面PostBack的事件源(控件的ID)。對于一般的控件,這樣就可以了,唯有Button和ImageButton觸發的PostBack無法通過這種方式獲取到它們的ID,起初還以為是它們實現的接口的不同而產生PostBack方式的不同。剛剛在AspAlliance.看到一篇關于__doPostBack的文章(原文:《Understanding the JavaScript __doPostBack Function》),才真正明白了頁面PostBack的內在機制,疑團也終于解開了。下面來簡單看一下頁面PostBack的原理,和Button,ImageButton PostBack的特殊性。

__doPostBack是一個純粹并且是非常簡單的javascript函數,大部分的頁面PostBack都是由它觸發的。注意,這里是“大部分”,因為只有兩個Web Server Control 會自己觸發頁面的PostBack,其它的所以控件都是通過__doPostBack函數觸發頁面的PostBack,那先來看一下這個函數的定義吧:

復制代碼 代碼如下:


<input type="hidden" value="" />
<input type="hidden" value="" />
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}

通過上面的代碼可以看到,__doPostBack帶有兩個參數,eventTarget是標識將要引發頁面PostBack的控件ID,eventArgument參數提供了在引發頁面PostBack事件時所帶的額外參數。當然這個函數被函數時,這兩個參數的值將賦值給頁面的兩個隱含變量__EVENTTARGET和__EVENTARGUMENT,然后調用頁面的submit方法提交頁面表單。這就是為什么我們可以通過Request.Form[“__EVENTTARGET”]獲取得到引發頁面PostBack的控件ID的原因。

了解了__doPostBack函數后,我們可以很容易的利用它非常方便地自己觸發自定義的PostBack事件。那上面也說了,大部分的控件都是調用這個方法來引了頁面的PostBack,只有兩個控件是例外,Button 和 ImageButton,正是因為它們不是通過調用__doPostBack來回發事件,所以通過表單隱含變量__EVENTTARGET和__EVENTARGUMENT是無法獲取得到引發PostBack的Button或ImageButton的ID和參數值的,只有通過下面的方式才能得它們的實例,進而判斷是哪個控件引發的PostBack的: C#

復制代碼 代碼如下:


foreach (string str in Request.Form)
{
Control c = Page.FindControl(str);
if (c is Button)
{
control = c;
break;
}
}


為什么能通過枚舉Request.Form集合的Key值,查找到的回發事件源呢?在這里Button和ImageButton又有一些不同。Button控件引發的PostBack,會將Button本身的ID作為Request.Form的一個Key,它的Value是Button的Text屬性值,回傳給服務器,這樣服務器就可以通過枚舉Request.Form的Key值,去查找出控件實例,判斷是否為Button控件,進而得到是哪個控件引發的PostBack事件。而ImageButton的不同就在于,它不僅僅是用ImageButton的ID作為Request.Form的Key,它是用ImageButton的ID加上.x和.y,作為Key,在Request.Form添加兩上鍵值對,這兩個鍵值對的值應該是標識ImageButton的圖片大小。同樣的,了解了這個規律后,我們仍然可以通過一定的方式得到是否是由ImageButton引發的PostBack。

總結:理解并掌握__doPostBack原理對我們更加了解Page的事件模型有非常大的幫助,并且也是我們進一步利用好頁面的PostBack事件的一個重要基礎。在整個asp.net頁面PostBack模型中,只有Button和ImageButton是個例外,其它的控件都是一樣的,也就是使用__doPostBack函數。在當我們需要通過__EVENTTARGET取得到事件源控件的話,這點是特別要注意的。

注意: __doPostBack('','')前面是兩個“_”,不是一個。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
北条麻妃99精品青青久久| 精品久久久免费| 国产精选久久久久久| 欧美一级成年大片在线观看| 欧美一级淫片丝袜脚交| 国产精品专区一| 福利一区福利二区微拍刺激| 狠狠色噜噜狠狠狠狠97| 国产一区二区三区免费视频| 国产综合香蕉五月婷在线| 欧美激情精品久久久久久大尺度| 亚洲大尺度美女在线| 日韩视频欧美视频| 国产精国产精品| 日韩福利伦理影院免费| 韩日精品中文字幕| 综合国产在线观看| 欧美寡妇偷汉性猛交| 国产成人精品午夜| 这里只有精品视频在线| 久久99久久亚洲国产| 成人免费看片视频| 国产精品美女在线| 国产成人精品久久亚洲高清不卡| 久久人人97超碰精品888| 国产精品久久久久77777| 国内外成人免费激情在线视频| 亚洲性视频网站| 欧美在线视频一二三| 中文字幕亚洲自拍| 久久久精品2019中文字幕神马| 亚洲无亚洲人成网站77777| 在线观看91久久久久久| 成人h猎奇视频网站| 欧美成人三级视频网站| 久久99国产精品自在自在app| 亚洲成人动漫在线播放| 亚洲最大成人网色| 尤物精品国产第一福利三区| 日韩国产精品亚洲а∨天堂免| 亚洲精品99久久久久| 亚洲午夜精品久久久久久久久久久久| 久久久视频在线| 亚洲欧美制服综合另类| 美女性感视频久久久| 中文字幕日韩欧美| 国产一区二区美女视频| 亚洲精品日韩丝袜精品| 亚洲成年人影院在线| 亚州欧美日韩中文视频| 欧美日韩aaaa| 亚洲一区www| 国产精品毛片a∨一区二区三区|国| 欧美日韩第一页| 成人xxxx视频| 欧美午夜视频一区二区| 日韩一区二区av| 国产精品2018| 精品无码久久久久久国产| 国产一区二区动漫| 国内精品国产三级国产在线专| 欧美制服第一页| 久久精品男人天堂| 国产91久久婷婷一区二区| 日韩在线视频观看正片免费网站| 欧美日韩国产页| 日本中文字幕久久看| 欧美日韩亚洲国产一区| 91久久国产综合久久91精品网站| 91爱爱小视频k| 欧美极品少妇xxxxⅹ免费视频| 日韩在线中文字| 亚洲第一网站免费视频| 国产精品美女久久久久av超清| 欧美美最猛性xxxxxx| 欧美午夜宅男影院在线观看| 精品露脸国产偷人在视频| 亚洲精品久久久久久久久久久久| 欧美精品久久久久久久| 国产人妖伪娘一区91| 亚洲а∨天堂久久精品9966| xx视频.9999.com| 日韩有码在线播放| 国产网站欧美日韩免费精品在线观看| 欧美日韩激情视频8区| 欧美二区乱c黑人| 97视频com| 亚洲男女自偷自拍图片另类| 国产高清视频一区三区| 欧美大尺度激情区在线播放| 91精品国产自产在线观看永久| 国内精品中文字幕| 成人国产精品av| 亚洲美女在线观看| 亚洲精品国产精品久久清纯直播| 国产欧美精品一区二区三区介绍| 久久久精品美女| 亚洲免费成人av电影| 精品国偷自产在线| 成人av在线亚洲| 国产精品成久久久久三级| 久久久久久久久久久亚洲| 亚洲精品一区二区三区不| 日韩国产欧美精品一区二区三区| 成人免费福利视频| 亚洲一区第一页| 另类视频在线观看| 色婷婷综合久久久久中文字幕1| 国产精品久久久久久av| 国内外成人免费激情在线视频网站| 国产91色在线|免| 色综合91久久精品中文字幕| 欧美与欧洲交xxxx免费观看| 色婷婷综合久久久久| 精品福利免费观看| 久久精品国产综合| 福利二区91精品bt7086| 午夜精品一区二区三区视频免费看| 日韩av电影手机在线观看| 国产不卡一区二区在线播放| 亚洲精品在线视频| 亚洲区bt下载| 精品久久久久久| 8090理伦午夜在线电影| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久黄色av网站| 久久99精品久久久久久噜噜| 色七七影院综合| www高清在线视频日韩欧美| 国产精品永久免费| 国产欧美一区二区三区久久| 亚洲二区在线播放视频| 日韩欧美在线视频免费观看| 国产视频久久久| 欧美激情视频一区二区三区不卡| 亚洲一区中文字幕在线观看| 日本久久久久久久久久久| 国产成人精品久久二区二区| 精品国产一区二区三区久久| 国精产品一区一区三区有限在线| 91精品久久久久久久久| 国产精品影片在线观看| 中文字幕日韩精品在线观看| 91在线色戒在线| 91精品国产自产在线| 色香阁99久久精品久久久| 久久影院在线观看| 亚洲毛片在线免费观看| 成人免费视频在线观看超级碰| 国外成人在线播放| 2019中文在线观看| 国产精品一区=区| 日韩av网址在线观看| 97香蕉超级碰碰久久免费软件| 清纯唯美亚洲综合| 精品露脸国产偷人在视频| 热久久免费视频精品| 亚洲精品日韩av| 国产一区二区黄| 日本19禁啪啪免费观看www| 午夜精品www| 久久精品视频在线观看| 亚洲午夜久久久久久久| 97色在线播放视频|