第一次回发后不显示viewState值



我是asp.net的新手(在使用经典asp编程多年后)。我正在尝试构建一个页面,将某些内容添加到字符串中。

我的代码如下:

default.aspx

<body>
<form id="form1" runat="server">
<div>
<p><asp:textbox id="tb" runat="server"></asp:textbox></p>
<asp:Panel ID="tbPanel" runat="server"></asp:Panel>
</div>
</form>
</body>

代码隐藏:

Partial Class demo_Default
Inherits System.Web.UI.Page

Public Property gesStr As String
Set(value As String)
ViewState("gesStr") = value
End Set
Get
Dim o As Object = ViewState("gesStr")
If o Is Nothing Then
Return ""
Else
Return o
End If
End Get
End Property

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim anzeigeStr As String = ""
If Page.IsPostBack Then
Else
gesStr = "1;"
End If
tb.Text = gesStr

Dim iButton As New Button
iButton.Text = "add"
iButton.CommandArgument = "1;"
AddHandler iButton.Click, AddressOf add
tbPanel.Controls.Add(iButton)

Me.anzeige()

End Sub

Private Sub add(ByVal sender As Object, ByVal e As EventArgs)
Dim myButton As Button = DirectCast(sender, Button)
Dim addString As String = myButton.CommandArgument
gesStr += addString
End Sub

Private Sub anzeige()
Dim gesArray As Array = Split(gesStr, ";")
For xLauf As Integer = 0 To UBound(gesArray) - 1
Dim anzLabel As New Label
anzLabel.Text = "<p>" & gesArray(xLauf) & "</p>"
tbPanel.Controls.Add(anzLabel)
Next


End Sub
End Class

问题:

按下该按钮将导致postBack,但在第二次按下该按钮之前不会显示添加结果。期望的结果是,子在第一次按下按钮后在循环中显示正确的阵列。

非常感谢您的帮助!

每次单击按钮时,您需要调用函数anzeige()并将gesStr值绑定到文本框控件。请参阅以下代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Page.IsPostBack Then
        Else
            gesStr = "1;"
        End If
        tb.Text = gesStr
        Dim iButton As New Button
        iButton.Text = "add"
        iButton.CommandArgument = "1;"
        iButton.CommandName = "1;"
        AddHandler iButton.Click, AddressOf add
        tbPanel.Controls.Add(iButton)
    End Sub
    Private Sub add(ByVal sender As Object, ByVal e As EventArgs)
        Dim myButton As Button = DirectCast(sender, Button)
        Dim addString As String = myButton.CommandArgument
        gesStr += addString
        anzeige()
    End Sub

    Private Sub anzeige()
        Dim gesArray As Array = Split(gesStr, ";")
        For xLauf As Integer = 0 To UBound(gesArray) - 1
            Dim anzLabel As New Label
            anzLabel.Text = "<p>" & gesArray(xLauf) & "</p>"
            tbPanel.Controls.Add(anzLabel)
        Next
        'Bind gesStr value to the textbox control
        tb.Text = gesStr
    End Sub

最新更新