ViewState在app_code中不起作用

时间:2013-02-27 12:02:37

标签: asp.net vb.net

请帮助解决这个问题。 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

1 个答案:

答案 0 :(得分: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 article