在VB.NET中写一个表单,当你返回它时它将是相同的状态

时间:2012-03-13 17:27:08

标签: asp.net .net vb.net

我正在尝试创建一个表单,当它返回时,它将具有相同的控件状态

我有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

2 个答案:

答案 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