ASP.NET是無狀態的。也就是說,每次請求頁面時,服務器都會構造整個頁面及其控件狀態,然後響應請求。然後呈現適當的HTML標記作爲對請求的響應。
對於任何控件,如果將autopostback屬性設置爲true,則如果控件導致回發(如單擊鏈接按鈕),則將頁面回發回服務器。
ASP.NET如何回發頁面? 它使用稱爲_doPostBack()的JavaScript函數完成它。功能是 -
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
此功能用於將表單提交回服務器。 _doPostBack通過使用隱藏變量__EVENTTARGET和__EVENTARGUMENT接受參數 - 事件目標和事件參數。這會告訴服務器哪個控件導致了回發,並將合適的參數傳遞給服務器。
,如果你有這樣的代碼在你的aspx頁面 -
相應產生的標記會 -
<a id="LinkButton1" href="javascript:__doPostBack('lnkButton','')">LinkButton</a>
所以,說你點擊一個鏈接按鈕,頁面回發的__doPostBack()函數。然後,該頁面在服務器上以頁面上的相應控制狀態重新創建。使用viewstate等頁面機制獲取每個控件的狀態。一旦加載頁面,服務器就會計算並呈現響應標記。