Asp.net
IsPostBack 在頁面載入中的實現
我使用 ASP.NET 的次數越多,
if (!IsPostBack) {}似乎越沒有意義……第一個例子:
例如,我剛剛搜尋了一個問題,他們說將其用作解決方案的一部分:
if (!Page.IsPostBack) { Page.LoadComplete += new EventHandler(Page_LoadComplete); }與編碼完全相同,LoadComplete 只會在第一次載入時觸發。點擊按鈕或觸發回發的任何內容後,LoadComplete 事件將處於未掛鉤狀態,從而跳過事件處理程序。因此,他們的“修復”僅適用於第一次載入 = 毫無價值。我立即註釋掉了
if (!Page.IsPostBack) {},現在事件總是按需要觸發。第二個例子:
我正在嘗試將事件掛鉤到動態創建的按鈕(順便說一下,我無法開始工作 [GRR!])。我看到了顯示這一點的範例:
myEditToggleButton = new Button(); myEditToggleButton.ID = "editToggleButton"; //^GOTTA HAVE THIS FOR EVENTS TO WORK! (supposedly, I haven't seen it work...) if (!IsPostBack) { myEditToggleButton.Click += new EventHandler(myEditToggleButton_Click); } Controls.Add(myEditToggleButton);與第一個範例一樣,我的理解是在第一個頁面載入後不會掛鉤事件,因此點擊後按鈕是“惰性”的(因為點擊觸發了回發)。
題:
你應該什麼時候使用
if (!IsPostBack) {}?我猜它只與標記創建的控制項有關。
簡而言之,您每次只需要在第一次載入時執行某些操作時就使用它。
的經典用法
Page.IsPostBack是數據綁定/控制項初始化。if(!Page.IsPostBack) { //Control Initialization //Databinding }持久化
ViewState且ControlState不需要在每次回發時重新創建的內容,因此您檢查這種情況以避免執行不必要的程式碼。另一個經典用法是獲取和處理
Querystring參數。您無需在回發時執行此操作。