Ich füge Steuerelemente programmgesteuert im Code-Behind zu einer Seite hinzu. Ich füge ein asp:Label hinzu und setze den Textwert. Ich füge ein asp:TextBox hinzu und setze den Textwert. Beide Textwerte werden im Response zurückgegeben und im Browser angezeigt. Soweit alles in Ordnung.
Der Benutzer führt eine Aktion durch, die zu einem Postback führt. Ich lade das dynamisch hinzugefügte asp:Label und asp:TextBox neu. Wenn die Antwort an den Browser zurückgegeben wird, wird nur der Textwert des asp:TextBox angezeigt. Der Textwert des asp:Label wird nicht angezeigt.
Wenn ich den HTML-Code inspiziere, kann ich das asp:Label-Steuerelement (gerendert als HTML-Span-Tag) sehen, aber ohne Wert.
Wie kann ich den Code dazu bringen, den Textwert eines asp:Label automatisch bei jedem Postback neu zu laden? Warum ist das Verhalten für ein asp:Label und ein asp:TextBox unterschiedlich? Ich möchte nicht den Textwert bei jedem Postback manuell neu setzen.
Hier ist ein ähnlicher Code, den ich verwende (placeHolderNameplates ist ein asp:PlaceHolder-Steuerelement auf der aspx-Seite):
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If Not Page.IsPostBack Then
Dim lbl As Label = New Label()
lbl.ID = "xxx1"
lbl.Text = "yo"
placeHolderNameplates.Controls.Add(lbl)
Dim tb As TextBox = New TextBox
tb.ID = "xxx2"
tb.Text = "yoyo"
placeHolderNameplates.Controls.Add(tb)
Else
Dim lbl As Label = New Label()
lbl.ID = "xxx1"
placeHolderNameplates.Controls.Add(lbl)
Dim tb As TextBox = New TextBox
tb.ID = "xxx2"
placeHolderNameplates.Controls.Add(tb)
End If