客戶端(瀏覽器)客戶端事件(傳送資料)
資料 服務端
(引發伺服器端事件處理程式)
處理資料
處理完畢,重新形成
html
(傳送)
html
客戶端(瀏覽器)展示
頁面回發包含了(頁面第一次傳送到客戶端引起的(
not ispostback
)和客戶端事件(事件回傳)引起的頁面回發)上面的圖就是頁面回發的示意圖。
頁面回傳指圖的上一部分,包含了(回傳事件和回傳資料)在
onload之前.
回傳事件,如
button
一類控制項觸發的回傳,會引發伺服器端事件;
回傳資料:是
web表單中包含的資料,該資料是在
web表單提交到伺服器端時傳遞給如
textbox
一類的控制項。
下面內容是引用別人的
「page
的事件與生命週期
」一文講到了頁面之上的事件順序。頁面事件順序是固定的,但頁面上的控制項事件則依賴具體頁面和使用者的操作。如果控制項的autopostback屬性設定為true(預設值為false),那麼將立刻引起頁面回發,即頁面中各個控制項的值回傳到web伺服器上,引發相應事件,由事件的處理程式處理。處理完成後如果沒有跳轉指令,該頁面將再此傳送到客戶端的瀏覽器上。如果控制項的autopostback屬性設定為false,那麼它的事件將不會一發生就馬上回傳,而要等到像button click這樣的回傳事件發生,才一併回傳。期間可能有多個事件被暫存在客戶端,但是如果乙個控制項的乙個事件重**生,則只暫存最後一次事件的資訊。
如果頁面的autoeventwireup屬性為false(預設值為true),那麼頁面回傳後頁面的事件將不會引發。autoeventwireup屬性可以在@ page指令中設定,或者在web.config檔案中設定autoeventwireup屬性。
由於頁面回發機制,程式設計師可能需要確定當前頁面是第一次傳送到客戶端,還是由於事件回傳造成的頁面回發。比如:當對頁面控制項進行初始化時,如果是第一次傳送到客戶端,則需要進行初始化,如資料繫結等;如果是由於事件回傳造成的頁面回發,因為已經初始化過了,所以無需再次初始化。頁面的ispostback屬性就是專門用來做回發檢查的。如果是回發,ispostback的值取true,否則取false。
WebForm 頁面回發機制
首次載入 在首次進入頁面時會觸發page load方法。回發機制 當使用者操作例如讓表單產生submit時產生回發,伺服器會再次載入當前網頁執行page load方法。load事件 不論是首次載入還是回發都會觸發該事件 在我們需要對頁面進行初始化的時候往往會寫在頁面載入page load事件中,但是...
二 事件和資料回發機制
控制項事件和資料回發概述 假如我們沒有對button 註冊click 事件,則button 會執行一遍它內部的click 相關邏輯,並沒有對page 物件產生任何影響 如果我們為button 定義了click 事件 如上面 片段 則button 還是執行一遍它內部的click 相關邏輯,不同的是在執...
回發事件執行很慢的問題
自己寫了乙個專門繫結datagrid的使用者控制項,如圖 實現分頁的乙個相同操作.使用方法 datagrid m dt 在大家部分地方使用都是正常的,可是今天出現了乙個問題.在有的頁面,控制項 頁面的所有控制項 的回發事件執行非常慢.經除錯不是事件沒有回發到伺服器,而在回發事件執行控制項初始化的時候...