Значение моего сеанса не меняется - PullRequest
0 голосов
/ 15 января 2010
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack = True Then
            Session("x") = "ABC"
        End If
    End Sub

    Protected Sub btnABC_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnABC.Click
        Session("x") = "ABC"
    End Sub

    Protected Sub btnCBA_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCBA.Click
        Session("x") = "CBA"
    End Sub

    Protected Sub btnShow_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnShow.Click
        TextBox1.Text = Session("x")
    End Sub
End Class

Три кнопки - ABC, CBA и Show.Если вы нажмете на ABC, а затем нажмите кнопку Показать. В текстовом поле отображается «ABC», но когда я нажимаю кнопку CBA И затем нажмите кнопку Показать.Свойство IsPostback будет иметь значение true каждый раз, когда страница публикуется на сервере.Таким образом, сессия сбросила значение.как преодолеть эту проблему ????

Ответы [ 3 ]

3 голосов
/ 15 января 2010

Если вы установите значение в page_load (), это назначение происходит каждый раз, когда вы загружаете страницу. Может быть, вы хотите установить это значение только при первом вызове страницы:

If IsPostback = False Then
    Session("x") = "Something"
End If

Вторая загрузка страницы не перезапишет значение, установленное в button1_click.

2 голосов
/ 15 января 2010

Когда вы нажимаете кнопку показа, это вызывает обратную передачу на сервер. Сначала запускается метод Page_Load, и вы назначаете "ABC" в Session ("x"). Затем вы помещаете сессию ("x") в текстовое поле. То, что вы, вероятно, хотели бы, это вместо этого:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        Session("x") = "ABC"
    End If
End Sub
0 голосов
/ 16 января 2010

Кроме того, что другие люди написали выше, я также рекомендую назначать значения сеанса во время события Page_InitComplete. Потому что в основном разработчики работают на этапе Page_Load, и иногда назначение значений Session также может привести к ошибкам из-за этого. Это похоже на то, что происходит до или после. Вы можете делать ошибки и так далее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...