1.服務器端控件Button被渲染成客戶端的javascript
<input type="submit" name="Button1" value="Button" id="Button1" />前端
類型爲type="submit"此類控件點擊之後會經過form表單提交,點擊之後會做爲參數發送到服務端,參數是控件的name屬性=控件的value值,服務器端會根據接收到的控件的name屬性的這個值來得知是這個按鈕被點擊了,從而在服務端觸發這個按鈕的點擊事件。java
當咱們在服務器端控件Button標籤中加入name屬性時,在前端渲染時服務器會將其去掉,這也證實了後臺是經過name值來獲取被點擊的按鈕名稱的。服務器
2.其餘服務器端控件的後臺事件觸發spa
服務器會自動爲服務器端控件的事件觸發生成一個腳本:code
1 <script type="text/javascript"> 2 //<![CDATA[ 3 var theForm = document.forms['form1']; 4 if (!theForm) { 5 theForm = document.form1; 6 } 7 function __doPostBack(eventTarget, eventArgument) { 8 if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 9 theForm.__EVENTTARGET.value = eventTarget; 10 theForm.__EVENTARGUMENT.value = eventArgument; 11 theForm.submit(); 12 } 13 } 14 //]]> 15 </script>
而後在每一個控件相應事件里加入js代碼:
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">Click</a> orm
以調用doPostBack向後臺發送相應的觸發信息,有兩個參數,第一個是觸發事件的控件名稱,第二個是事件參數。blog
3.服務器會自動生成隱藏域 VIEWSTATE ,保存服務器控件的值,在頁面回發時保存狀態事件
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="dfH5nMWjX1dNSXzn46Y8JnrW6phZm5uVAKtEN6WJ9+0QH5o2vTLSkKi844UXjfMNj5w9xjbw+CveDXrKw6PmUBnHUp85WYCvEi9n8IHtvZ8=" />ip