加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

会话对象不更新ASP.NET

发布时间:2020-05-24 12:54:54 所属栏目:asp.Net 来源:互联网
导读:我在代码的一个时刻设置了一个会话对象: Session(my_name) = Dave 稍后在我的代码中,我给用户一个更新此对象的机会: Session(my_name) = TextBox1.Text 我重新加载我的页面并显示一个像这样的小问候: Label1.Text = Hello CStr(Session(my_name)) 结果是:

我在代码的一个时刻设置了一个会话对象:

Session("my_name") = "Dave"

稍后在我的代码中,我给用户一个更新此对象的机会:

Session("my_name") = TextBox1.Text

我重新加载我的页面并显示一个像这样的小问候:

Label1.Text = "Hello" & CStr(Session("my_name"))

结果是:“Hello Dave”无论我改变Session(“my_name”)也是如此.

编辑:这是我写的一个完整的代码隐藏演示:

Public Class WebForm1
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load
    Response.Cache.SetCacheability(HttpCacheability.NoCache)
    Response.ExpiresAbsolute = DateTime.Now.AddMonths(-1)
    If Page.IsPostBack = False Then
        Session("my_name") = "Dave"
    End If
    Label1.Text = CStr(Session("my_name"))
End Sub

Protected Sub Button1_Click(ByVal sender As Object,ByVal e As EventArgs) Handles Button1.Click
    Session("my_name") = TextBox1.Text
End Sub

结束类

解决方法

Page的Load事件比Button的click事件更快启动.因此,在运行时,Session(“my_name”)的值仍然是“Dave”.

如果您想正确设置它,您应该将Label1.Text = CStr(Session(“my_name”))放入页面的PreRender事件处理程序中.

你也把它放入了Button的Click事件中(当然,在设置了会话值之后),但我想你以后想要使用会话来存储对象,以减少不重要的目的.

(我想你以后想要将会话用于更高级的目的.毕竟,如果你只想更改标签的文本,那么使用会话会有什么意义?)

基本上,这就是你想要的:

>如果不是回发,则Page_Load将Session(“my_name”)设置为“Dave”
> Button1_Click将Session(“my_name”)设置为文本框的文本
> Page_PreRender设置标签的文本.

以下是您当前代码所发生的情况:

>如果不是回发,则Page_Load将Session(“my_name”)设置为“Dave”
> Page_Load设置标签的文本
> Button1_Click将Session(“my_name”)设置为文本框的文本

您可以在此处阅读有关该主题的更多信息:ASP.NET Page Life Cycle Overview.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读