2013-02-27 65 views
0

请帮忙。 Viewstate是否允许在app_code的类中使用?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 

然后getSortDirection被称为页面(test.aspx.vb)

+0

展示你是如何设置和获取价值 - 在这种方法是你这样做等等。 – 2013-02-27 12:10:38

回答

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

+0

你能否深入解释这个问题..我很迷茫。我不会使用公共财产? – user2054091 2013-02-27 13:37:49

+0

我确认viewstate在app_code中不起作用,也许我的实现不正确。我试图在aspx.vb中运行代码,并且viewstate正在工作。 – user2054091 2013-02-27 13:38:40

+0

所以我不会再使用公共财产。我很担心如何将数据作为参数传递。如何通过我viewstate getsortdirection ..对不起 – user2054091 2013-02-27 14:00:09