Più che uso ASP.NET, più if (!IsPostBack) {}
sembra inutile ...Attuazione della IsPostBack nel caricamento della pagina
Primo esempio:
Per esempio, ho appena Googled un problema, hanno detto uso questo come parte della soluzione:
if (!Page.IsPostBack)
{
Page.LoadComplete += new EventHandler(Page_LoadComplete);
}
Che fa esattamente come codificato, LoadComplete sparerà solo sul primo carico. Dopo aver fatto clic su un pulsante o qualsiasi cosa che attiva un postback, l'evento LoadComplete viene lasciato sganciato, saltando così il gestore di eventi. Pertanto, la loro "correzione" funziona solo sul primo carico = senza valore. Ho prontamente commentato lo if (!Page.IsPostBack) {}
e ora l'evento si attiva sempre come desiderato.
Secondo esempio:
Sto tentando di agganciare gli eventi a un pulsante creato in modo dinamico (che tra l'altro, non posso andare al lavoro [GRR!]). Vedo esempi che mostrano questo:
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);
Come primo esempio, la mia comprensione è che l'evento non sarebbe stato agganciato dopo il primo caricamento della pagina, quindi il pulsante è "inerte", dopo uno scatto (perché facendo clic su innescato una postback).
Domanda:
Quando si dovrebbe utilizzare if (!IsPostBack) {}
? Immagino che abbia a che fare solo con i controlli creati con mark-up.
Francamente, qualsiasi codice nell'evento di caricamento non è racchiuso in un! Page.IsPostBack è una bandiera rossa per me durante le revisioni del codice. Spesso indica un fraintendimento di come funzionano le webform, soprattutto per quanto riguarda l'associazione dei dati. –