我需要访问Web应用程序页面中的一些变量。变量的范围就在该特定页面中。 哪一个是解决方案? Session或ViewState?或者更好的解决方案?
Private Property UserId() As Integer
Get
If Not ViewState("UserId") Is Nothing Then
Return CType(ViewState("UserId"), Integer)
Else
Return -1
End If
End Get
Set(ByVal Value As Integer)
ViewState("UserId") = Value
End Set
End Property
或
Private Property UserId() As Integer
Get
If Not Session("UserId") Is Nothing Then
Return CType(Session("UserId"), Integer)
Else
Return -1
End If
End Get
Set(ByVal Value As Integer)
Session("UserId") = Value
End Set
End Property
每个用户也是ViewState自定义吗?
答案 0 :(得分:7)
如果您要在多个页面中存储用户独有的信息,那么Session是一个不错的选择。 Cookie用于将用户绑定到给定的Session,Sessions将超时,这是值得记住的。
ViewState只是HTML中的一个隐藏字段,因此当页面回发给自己时,这可以用来保存对象。缺点是你将数据序列化为一个字符串并将其发送到客户端(它在回发后验证,因此篡改它会引发异常)。要回答您的问题,是的,ViewState是每页用户数。
如果您需要存储网站所有用户访问的数据,Application存储空间或HttpContext.Cache非常有用。
这只是一个简短的摘要,有关您的选项的更详细说明,请查看ASP.NET State Management Overview。