我在後面的代碼中以編程方式向頁面添加控件。我添加一個asp:Label並設置它的Text值。我添加一個asp:TextBox並設置它的文本值。兩個文本值都在Response中返回並顯示在瀏覽器中。迄今爲止都很好。丟失<asp:Label>來自ViewState的文本值用於動態添加控件
用戶執行導致回發的操作。我重新加載動態添加的asp:Label和asp:TextBox。當Response返回給瀏覽器時,只顯示asp:TextBox Text值。 asp:標籤文本值不是。
如果我檢查HTML,我可以看到asp:Label控件(呈現爲HTML span標籤)但沒有任何價值。
如何獲取代碼以在每次回發時自動重新加載asp:Label的Text值?爲什麼asp:Label和asp:TextBox的行爲不同?我不想在每次回發中手動重新設置文本值。
這是類似於什麼,我做了一些代碼(placeHolderNameplates是一個asp:aspx頁面上的佔位符控件):
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