ASP.NET網頁中DoPostBack程式碼

  在ASP.NET網頁中,常會使用IsPostBack來判斷網頁是否回應用戶端回傳而被載入,或者是否為第一次被載入與存取;另外,我們也常會在一些控制項使用AutoPostBack的功能,當你使用這些功能時,會不會很好奇,它們是怎麼運作的。

  我們先在default.aspx接一個DropDownList控制項,然後啟用AutoPostBack。然後開啟網頁,查看原始碼:

1  <select name="DropDownList1" onchange="javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0)" id="DropDownList1">
2 <option value="1">1</option>
3 <option value="2">2</option>
4  
5</select>


  在select中被加入一段onchange事件,所有當你有選擇的動作時,會自動觸發javascript,我們來看網頁中被加入的javascript:

01<script type="text/javascript">
02//<![CDATA[
03var theForm = document.forms['form1'];
04if (!theForm) {
05    theForm = document.form1;
06}
07function __doPostBack(eventTarget, eventArgument) {
08    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
09        theForm.__EVENTTARGET.value = eventTarget;
10        theForm.__EVENTARGUMENT.value = eventArgument;
11        theForm.submit();
12    }
13}
14//]]>
15</script>


  __doPostBack的目的,在產生一個事件。當我們在使用Web控制項時,控制項都可以有自己的事件,例Button的Click、CheckBox的CheckedChanged、DropDownList的SelectedIndexChanged…等。這些事都是使用者在網頁上做了某些事情時所產生的動作。可是我們並沒有在網頁上寫任何程式碼來補抓這些事件,因此事件就算產生,也不會被處理。但這些事件之所以能Submit到後端交由ASP.NET來處理,都是藉由ASP.NET產生Web From時加入的Javascript程式碼「__doPostBack函式」來產生。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。