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