我們先在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函式」來產生。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。