來源:北大青鳥飛迅校區(qū)|發(fā)布時(shí)間:2013-05-02 09:38:21
Asp.net 中在客戶端觸發(fā)服務(wù)端事件分為兩種情況:
一. WebControls中的Button 和HtmlControls中的Type為submit的HtmlInputButton
這兩種按鈕最終到客戶端的表現(xiàn)形式為: < input name="Submit1" id="Submit1" type="submit" value=”Submit”>,這是Form表單的提交按鈕,點(diǎn)擊以后會(huì)作為參數(shù)發(fā)送到服務(wù)端,參數(shù)是這樣的: 控件的name屬性=控件的value值,對應(yīng)上面的例子就是:Submit1= Submit。 服務(wù)端會(huì)根據(jù)接收到的控件的name屬性的這個(gè)key來得知是這個(gè)按鈕被點(diǎn)擊了,從而在服務(wù)端觸發(fā)這個(gè)按鈕的點(diǎn)擊事件。
二. HtmlControls 中的 Type為button的HtmlInputButton 和其它所有的控件事件,比如LinkButton點(diǎn)擊,TextBox的Change事件等等:
這些事件在客戶端產(chǎn)生后會(huì)經(jīng)過一個(gè)統(tǒng)一的機(jī)制發(fā)送到服務(wù)端。
1. 首先asp.net頁框架會(huì)使用兩個(gè)Hidden域來存放表示是哪個(gè)控件觸發(fā)的事件,以及事件的參數(shù):
< !—表示觸發(fā)事件的控件,一般是這個(gè)控件的name -->
< input type="hidden" name="__EVENTTARGET" value="" />
< !—表示觸發(fā)事件的參數(shù),一般是當(dāng)某個(gè)控件有兩個(gè)以上的事件時(shí),用來區(qū)別是哪個(gè)事件 -->
< input type="hidden" name="__EVENTARGUMENT" value="" />
2. 服務(wù)端會(huì)生成一個(gè)jscript的方法來處理所有這些事件的發(fā)送,這段代碼是:
< script language="javascript"> < !-- function __doPostBack(eventTarget, eventArgument) { var theform = document.WebForm2; theform.__EVENTTARGET.value = eventTarget; theform.__EVENTARGUMENT.value = eventArgument; theform.submit(); } // --> < /script> |
3. 每個(gè)會(huì)引發(fā)服務(wù)端事件的控件都會(huì)在響應(yīng)的客戶端事件中調(diào)用上面的代碼:
比如,HtmlControls 中的 Type為button的HtmlInputButton的點(diǎn)擊事件
< !—客戶端的點(diǎn)擊事件調(diào)用__doPostBack,eventTarget 參數(shù)為'Button2',表示是name為'Button2’控件觸發(fā)的事件,eventArgument 為空,表示這個(gè)Type為button的HtmlInputButton只有一個(gè)客戶端觸發(fā)的服務(wù)端事件-->
全程面授,不高薪都難
申請成功后,我們將在24小時(shí)內(nèi)與您聯(lián)系
招生熱線: 4008-0731-86 / 0731-82186801
學(xué)校地址: 長沙市天心區(qū)團(tuán)結(jié)路6號(hào)
Copyright © 2006 | 湖南大計(jì)信息科技有限公司 版權(quán)所有
湘ICP備14017520號(hào)-3