Asp.net

IsPostBack 在頁面載入中的實現

  • September 1, 2010

我使用 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
}

持久化ViewStateControlState不需要在每次回發時重新創建的內容,因此您檢查這種情況以避免執行不必要的程式碼。

另一個經典用法是獲取和處理Querystring參數。您無需在回發時執行此操作。

引用自:https://stackoverflow.com/questions/3620883