Da ASP.NET zustandslos ist, bedeutet dies, dass es den Zustand nicht vom Post zurück zum Postback hält. Speichern Sie den Benutzer im Ansichtszustand, in der Sitzung oder in der Anwendung, um ihn beim Postback zum Postback zu sehen.
%Vor%Jedes Mal, wenn Sie Postbacks ausführen, selbst für "einfache" Dinge wie Button-Klick-Ereignisse, arbeiten Sie mit einer neuen Instanz der Seitenklasse. Das ist ASP.Net 101.
Die Angabe des Benutzernamens als privat oder geschützt hat keinen Einfluss auf diese Situation. Das einzige geschützte / private Lager wäre die Zugänglichkeit der Variablen außerhalb der Klasse oder in geerbten Mitgliedern.
Ich glaube, das ist wahrscheinlich ein Lebenszyklusproblem.
Wenn Sie diese Seite zum ersten Mal aufrufen, hat der Benutzername nur einen Wert, wenn die Abfragezeichenfolge für die Anforderung festgelegt wurde. "/TeacherControlPanel.aspx" wird also einen Benutzernamen ohne Wert haben, aber "/TeacherControlPanel.aspx?username=SomeUserName". In diesen Fällen hat der Feldbenutzername nur einen Wert, wenn einer festgelegt ist. Wenn kein Querystring gesetzt ist und die Seite das click-Ereignis der Schaltfläche verarbeitet, wird die Ladung ausgelöst. Keine Abfragezeichenfolge bedeutet, dass der Benutzername null ist, was bedeutet, dass das click-Ereignis nichts an die Weiterleitungszeichenfolge anhängen kann.
Die Frage ist also in Ihrer Anwendung, welchen Navigationspfad Sie verwenden, um zu TeacherControlPanel.aspx zu gelangen?