Implementation von IsPostBack beim Laden von Seiten
Je mehr ich ASP.NET verwende, desto mehrif (!IsPostBack) {}
scheint sinnlos ...
Erstes Beispiel:
Zum Beispiel habe ich gerade ein Problem gegoogelt, sie sagten dies als Teil der Lösung:
if (!Page.IsPostBack)
{
Page.LoadComplete += new EventHandler(Page_LoadComplete);
}
Was genau wie codiert funktioniert, wird LoadComplete nur beim ersten Laden ausgelöst. Nach dem Klicken auf eine Schaltfläche oder auf etwas, das ein Postback auslöst, bleibt das LoadComplete-Ereignis deaktiviert, sodass der Ereignishandler übersprungen wird. Daher funktioniert ihr "Fix" nur beim ersten Laden = wertlos. Ich habe umgehend das @ auskommentieif (!Page.IsPostBack) {}
und jetzt wird das Ereignis immer wie gewünscht ausgelöst.
Zweites Beispiel:
Ich versuche, Ereignisse an eine dynamisch erstellte Schaltfläche anzuhängen (die ich übrigens nicht bearbeiten kann [GRR!]). Ich sehe Beispiele, die dies zeigen:
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);
Wie im ersten Beispiel ist es meines Wissens nach so, dass das Ereignis nach dem Laden der ersten Seite nicht mehr verknüpft wird. Daher ist die Schaltfläche nach einem Klick "inaktiv" (da durch Klicken ein Postback ausgelöst wurde).
Frage
Wann sollten Sie @ verwendif (!IsPostBack) {}
? Ich vermute, es hat nur mit Mark-up erstellten Steuerelementen zu tun.