ASP.NET服務器端控件原理分析

服務器端控件觸發事件分兩種:

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(&#39;LinkButton1&#39;,&#39;&#39;)">Click</a> orm

以調用doPostBack向後臺發送相應的觸發信息,有兩個參數,第一個是觸發事件的控件名稱,第二個是事件參數。blog

3.服務器會自動生成隱藏域 VIEWSTATE ,保存服務器控件的值,在頁面回發時保存狀態事件

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="dfH5nMWjX1dNSXzn46Y8JnrW6phZm5uVAKtEN6WJ9+0QH5o2vTLSkKi844UXjfMNj5w9xjbw+CveDXrKw6PmUBnHUp85WYCvEi9n8IHtvZ8=" />ip

相關文章
相關標籤/搜索