Asp.Net的控制項如何與Server互動

來源:互聯網
上載者:User

以前寫asp的程式的時候,知道只有type設定為submit的按鈕,才能觸發表單提交資料給伺服器端。
如:Asp.Net中的Button就是等於<input type="submit">.
但是現在Asp.Net的好多控制項都可以任意的和伺服器端互動,如:LinkButton.
這是怎麼實現的呢?
難道是一種全新的方式嗎?
其實,這隻是微軟的一種變通的方式。
我們先來看看用戶端的代碼是如何的.
我這裡是一個帶有LinkButton的頁面,
其實LinkButton在用戶端就等於html裡的A.
我們來看看LinkButton為什麼也能和伺服器端互動?
當我們點擊右鍵查看該頁面的原始碼時,看到:

<script type="text/javascript">
<!--
var theForm = document.forms['ctl00'];
if (!theForm) {
    theForm = document.ctl00;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->
</script>

<a id="simpleLinkButton1" href="javascript:__doPostBack('simpleLinkButton1','')">Click Me</a>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
從上面的代碼中就可以看出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();
            }
      }
}

以上只是把自己在學習工作過程中的一些體會記錄如此,防止自己忘記了。
也望和大家多多交流!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.