0

请帮助解决这个问题。Viewstate 是否允许在 app_code 的类中使用?

我在 app_code 中有这段代码,但它似乎不起作用。视图状态始终设置为空。如何在 App_Code 文件夹中的类中保留 ViewState 中的值?

 Public Property GridViewSortDirection() As String

            Get
                Return IIf(ViewState("SortDirection") = Nothing, "ASC", ViewState("SortDirection"))
            End Get
            Set(ByVal value As String)
                ViewState("SortDirection") = value
            End Set
 End Property

这是设置 GridviewSortDirectio 值的代码

Public Function GetSortDirection() As String

            Select Case GridViewSortDirection
                Case "ASC"
                    GridViewSortDirection = "DESC"
                Case "DESC"
                    GridViewSortDirection = "ASC"
            End Select

            Return GridViewSortDirection
        End Function

然后在页面(test.aspx.vb)中调用getSortDirection

4

1 回答 1

1

如果您在浏览器中查看源代码,您会看到很多乱码,只需搜索 VIEWSTATE 即可看到。这很重要,因为 HTTP 请求是无状态的,这意味着浏览器对服务器的每个请求都会离开旧页面并获取新页面。

在回发期间,这是一个问题,因为您实际上是在离开页面并获得一个干净的新页面,它恰好是同一个页面。需要有一种方法来保存页面的状态,例如下拉选择或文本框输入,这是通过 ViewState 完成的。您看到的乱码是这些信息作为用于维护状态的编码数据。

当您刷新浏览器窗口(顶部的按钮)时,ViewState 会丢失,数据会恢复到原始状态。

App_Code 是存储在服务器上的类,与页面无关。这就是 App_Code 中没有 ViewState 的原因。如果您想在页面之外维护状态,则将Session数据存储在服务器上,直到您关闭浏览器窗口。在您的情况下,将数据作为参数传递可能更合适

Public Function GetSortDirection(direction) As String
            Select Case direction
                Case "ASC"
                    Return "DESC"
                Case "DESC"
                    Return "ASC"
            End Select
        End Function

如需深入解释,请阅读 MSDN文章

于 2013-02-27T12:49:12.373 回答