【问题标题】:Asp.net 4, array resets for each run?Asp.net 4,每次运行的数组重置?
【发布时间】:2011-03-20 02:34:02
【问题描述】:

我创建了一个非常简单的 asp.net 网页来生成一些 HTML。这个想法是,每次用户单击按钮时,先前的输入都会存储到一个数组中,然后与最近的输入一起列出。问题是每次点击都会重置数组,我制作的计数器也是如此(使用“i”作为整数,每次点击使用“i += 1”。)

结果是每次都选择Case 0,这当然不是计划。

提供的是代码。提前谢谢。

Partial Class _Default
Inherits System.Web.UI.Page
Dim name, url, dive As String
Dim i As Integer
Dim rememberme(2) As String

Protected Sub btn_readmetoo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_readmetoo.Click
    name = txt_name.Text
    url = txt_url.Text

    If i = 3 Then
        i = 0
    End If

    Select Case i
        Case 0
            rememberme(0) = "Les også: " & "<a href=""" & url & """" & ">" & name & "</a>"
            txt_listurls.Text = "<p>" & rememberme(0) & "</p>"
        Case 1
            rememberme(1) = "Les også: " & "<a href=""" & url & """" & ">" & name & "</a>"
            txt_listurls.Text = "<p><ul><li>" & rememberme(0) & "<li>" & rememberme(1) & "</ul></p>"
        Case 2
            rememberme(2) = "Les også: " & "<a href=""" & url & """" & ">" & name & "</a>"
            txt_listurls.Text = "<p><ul><li>" & rememberme(0) & "<li>" & rememberme(1) & "<li>" & rememberme(2) & "</ul></p>"
    End Select

    i += 1
    lbl_counter.Text = i
End Sub

【问题讨论】:

    标签: asp.net html arrays


    【解决方案1】:

    rememberme 数组已重置,因为它们不属于 Page ViewState。如果要持久化数组,则可以使用以下语法:

    Protected Sub btn_readmetoo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_readmetoo.Click
        name = txt_name.Text
        url = txt_url.Text
    
        If i = 3 Then
            i = 0
        End If
    
        'recall array from ViewState
        If ViewState("rememberme") IsNot Nothing Then
            rememberme = ViewState("rememberme")
        End If
    
        Select Case i
            Case 0
                rememberme(0) = "Les også: " & "<a href=""" & url & """" & ">" & name & "</a>"
                txt_listurls.Text = "<p>" & rememberme(0) & "</p>"
            Case 1
                rememberme(1) = "Les også: " & "<a href=""" & url & """" & ">" & name & "</a>"
                txt_listurls.Text = "<p><ul><li>" & rememberme(0) & "<li>" & rememberme(1) & "</ul></p>"
            Case 2
                rememberme(2) = "Les også: " & "<a href=""" & url & """" & ">" & name & "</a>"
                txt_listurls.Text = "<p><ul><li>" & rememberme(0) & "<li>" & rememberme(1) & "<li>" & rememberme(2) & "</ul></p>"
        End Select
    
        i += 1
        lbl_counter.Text = i
    
        'Store array in ViewState
        ViewState("rememberme") = rememberme
    End Sub
    

    【讨论】:

      【解决方案2】:

      是的,每次页面重新加载时,代码都会重新开始并从头开始创建一个新页面。

      如果你想将数据从一个页面加载到另一个页面,基本上有两种解决方案:

      1. 将数据放入页面(隐藏字段、cookie 等),以便在请求下一页时将其返回给服务器。

      2. 将数据放入 Session 变量中。

      【讨论】:

        猜你喜欢
        • 2018-04-21
        • 1970-01-01
        • 2013-11-08
        • 2015-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-29
        • 2021-09-30
        相关资源
        最近更新 更多