@Brad Feuer: Ihre Antwort nicht abgeschlossen ist; Er macht es höchstwahrscheinlich zu spät im Seitenlebenszyklus während des Page_Load-Ereignisses.
Okay, hier ist, was Sie vermissen.
ASP.NET ist zustandslos. Das bedeutet, nachdem Ihre Seite gerendert und an den Browser gesendet wurde, wird das Seitenobjekt und alles darauf zerstört. Es gibt keinen Link, der auf dem Server zwischen dieser Seite und dem des Browsers des Benutzers verbleibt.
Wenn der Benutzer auf eine Schaltfläche klickt, wird dieses Ereignis zusammen mit anderen Informationen, wie z. B. dem Feld verborgenes Anzeigestatus, an den Server gesendet.
Auf der Serverseite bestimmt ASP.NET, welche Seite die Anforderung verarbeitet, und erstellt die Seite von Grund auf neu. Neue Instanzen von Serversteuerelementen werden entsprechend der ASPX-Seite erstellt und verknüpft. Nach dem Zusammenbau werden die Postback-Daten ausgewertet. Der Viewstatus wird verwendet, um Steuerelemente zu füllen, und Ereignisse werden ausgelöst.
Dies alles geschieht in einer bestimmten Reihenfolge, genannt . Um komplexere Dinge in ASP.NET zu erledigen, z. B. das Erstellen dynamischer Steuerelemente und das Hinzufügen dieser Elemente zur Webseite zur Laufzeit, MÜSSEN Sie den Seitenlebenszyklus verstehen.
Mit Ihrem Problem müssen Sie diese Schaltfläche jedes Mal erstellen, wenn die Seite geladen wird. Darüber hinaus müssen Sie diese Schaltfläche erstellen, BEVOR Ereignisse auf der Seite ausgelöst werden. Kontrollereignisse werden zwischen Page_Load und Page_LoadComplete ausgelöst.
Sie möchten, dass Ihre Steuerelemente geladen werden, bevor ViewState-Informationen analysiert und zu Steuerelementen hinzugefügt werden und bevor Steuerereignisse ausgelöst werden. Daher müssen Sie das PreInit-Ereignis behandeln und an dieser Stelle die Schaltfläche hinzufügen. Auch das müssen Sie JEDES Mal tun, wenn die Seite geladen wird.
Eine letzte Anmerkung; Die Verarbeitung von Seitenereignissen ist in ASP.NET etwas seltsam, da die Ereignisse automatisch hochgefahren werden. Beachten Sie, dass der Load-Ereignishandler als Page_Load ...
bezeichnet wird