以前寫asp的程式的時候,知道只有type設定為submit的按鈕,才能觸發表單提交資料給伺服器端。
如:Asp.Net中的Button就是等於.
但是現在Asp.Net的好多控制項都可以任意的和伺服器端互動,如:LinkButton.
這是怎麼實現的呢?
難道是一種全新的方式嗎?
其實,這只是微軟的一種變通的方式。
我們先來看看客戶端的程式碼是如何的.
我這裡是一個有LinkButton的頁面,
其實LinkButton在客戶端就等於html裡的A.
我們來看看LinkButton為什麼也能跟伺服器端互動?
當我們點擊右鍵查看該頁面的原始碼,看到:
Click Me
從上面的程式碼中就可以看出simpleLinkButton1是一個鏈接,透過客戶端程式碼來提交所在的表單。
而其中兩個隱藏域,則用來交換資料的,就是把__doPostBack的兩個參數值賦給這兩個隱藏域。
這就是為什麼LinkButton也具有提交資料的最直觀的原因。
那這上面的程式碼是怎麼產生的呢?
我們看LinkButton的原始碼就可以清楚知道:
protected internal override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if ((this.Page != null) && this.Enabled)
{
this.Page.RegisterPostBackScript();
if ((this.CausesValidation && (this.Page.GetValidators(this.ValidationGroup).Count > 0)) || !string.IsNullOrEmpty(this.PostBackUrl))
{
this.Page.RegisterWebFormsScript();
}
}
}
以上只是把自己在學習工作過程中的一些體會記錄如此,防止自己忘記了。
也望和大家多多交流!
http://www.cnblogs.com/maplye/archive/2006/08/29/489338.html