我正在尝试创建一个表单,当它返回时,它将具有相同的控件状态
我有3个.net页面,testa,testb,testc
testa,设置会话并有一个按钮去testb。 testb有一个复选框和一个按钮去testc。 testc有一个返回页面testb的按钮。
我想要它,所以当我们离开testc,然后返回时,复选标记将处于相同的状态,但事实并非如此。当我从页面testc返回到页面testb时,它保持取消选中状态
这就是我所做的, 在页面加载事件中,我将复选框设置为“按钮”会话变量。在按钮事件中,我在Session变量中保存按钮检查状态并调用页面testc
代码
第A页
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Server.Transfer("testb.aspx")
End Sub
Page b
Partial Class testb
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim t As Boolean
t = Session.Item("button")
CheckBox1.Checked = t
End Sub
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim t As Boolean
t = CheckBox1.Checked
Session.Item("button") = t
Server.Transfer("testc.aspx")
End Sub
End Class
Page c
Partial Class testc
Inherits System.Web.UI.Page
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Server.Transfer("testb.aspx")
End Sub
End Class
答案 0 :(得分:0)
会话中的数据存储为Object
。您需要做的是从Session获取值,然后将其转换为Boolean
,如果它不是null
(VB中的Nothing
)。我们之前使用过这种技术:
Dim rawValue As Object = Session.Item("button")
Dim realValue as Boolean
If rawValue IsNot Nothing Then
realValue = Boolean.Parse(rawValue.ToString())
End If
答案 1 :(得分:0)
听起来您需要检查IsPostBack
方法中的Page_Load
属性,以确定是否应加载值。如果是回发,请不要从会话加载。
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim t As Boolean = Session.Item("button")
CheckBox1.Checked = t
End If
End Sub