Asp.net 中在客戶端觸發(fā)服務(wù)端事件分為兩種情況:
一. WebControls中的Button 和HtmlControls中的Type為submit的HtmlInputButton
這兩種按鈕最終到客戶端的表現(xiàn)形式為: ,這是Form表單的提交按鈕,點(diǎn)擊以后會作為參數(shù)發(fā)送到服務(wù)端,參數(shù)是這樣的: 控件的name屬性=控件的value值,對應(yīng)上面的例子就是:Submit1= Submit。 服務(wù)端會根據(jù)接收到的控件的name屬性的這個(gè)key來得知是這個(gè)按鈕被點(diǎn)擊了,從而在服務(wù)端觸發(fā)這個(gè)按鈕的點(diǎn)擊事件。
二. ImageButton或者HttpInputImage:
這些控件到客戶端的表現(xiàn)類似這樣的: ,點(diǎn)擊了這樣的控件會直接提交表單,作用同提交按鈕。點(diǎn)擊了這樣的控件傳到服務(wù)端的參數(shù)是這樣的:id.x=nn&id.y=nn,對應(yīng)到上面的例子就是:img1.x=nnimg1.y=nn
三. HtmlControls 中的 Type為button的HtmlInputButton 和其它所有的控件事件,比如LinkButton點(diǎn)擊,TextBox的Change事件等等:
這些事件在客戶端產(chǎn)生后會經(jīng)過一個(gè)統(tǒng)一的機(jī)制發(fā)送到服務(wù)端?! ?
1. 首先asp.net頁框架會使用兩個(gè)Hidden域來存放表示是哪個(gè)控件觸發(fā)的事件,以及事件的參數(shù):
2. 服務(wù)端會生成一個(gè)jscript的方法來處理所有這些事件的發(fā)送,這段代碼是: