当右键刷新时,为什么ViewState的值会丢失?
我在Page_Load里取得session中的值,把值保存到ViewState,然后清除session,但当我点击右键刷新时,ViewState的值却丢失了,如何能清除session而且当页面刷新时还能保留住原有的值,ViewState能做到吗?还请各位高手赐教。代码如下:
If Not IsNothing(Session.Item("Item_1")) Then
ViewState("2030") = Session.Item("Item_1")
Session.Remove("Item_1")
End If
Dim f As String = ViewState("2030")
[解决办法]
做不到。
不明白为什么要清除session
[解决办法]
或许你可以把seesion的值附加到url后边,不用viewstate
[解决办法]
做不到ViewState回发后保存内容
刷新后就没了
一定要用ViewState就象办法只回发不刷新
[解决办法]
ViewState 只在postback的过程中持久化。
[解决办法]
“右键刷新”时,浏览器拿出上一次页面提交的数据重复提交,这其中就包括上一个页面提交时的ViewState值。
我看不出你的“把值保存到ViewState”的道理。这是错误的举措。如果你为了解决“Session丢失”问题,那么应该使用“状态服务器”管理应用程序状态,或者放弃Session自己写代码把页面值写入数据库或者xml文件(当然此时要区分SessionID来区分不同的客户端会话)。
ViewState是页面状态,Session是会话状态,一个会话中可能有1个或者无数个页面,页面触发的顺序不定。把Session数据保存到ViewState中从逻辑上就错误了。
[解决办法]
- VB.NET code
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsNothing(Session.Item("Item_1")) Then ViewState("2030") = Session.Item("Item_1") Session.Remove("Item_1") End If Dim f As String = ViewState("2030") Response.Write(f) End Sub Protected Sub SetSession() Session("Item_1") = "ttt" End Sub