ASP.NET網頁中DoPostBack程式碼

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

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


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

</select>


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


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


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

沒有留言:

張貼留言

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