gpt4 book ai didi

.net - session 对象不更新 ASP.NET

转载 作者:行者123 更新时间:2023-12-02 16:18:04 25 4
gpt4 key购买 nike

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

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

下课

最佳答案

PageLoad 事件比Button 的点击事件触发。因此,在运行时,Session("my_name") 的值仍然是“Dave”。

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

您也将其放入 ButtonClick 事件中(当然是在设置 session 值之后),但我猜您想使用稍后用于存储对象以用于不那么琐碎的目的。

(我猜您稍后会想将 session 用于更高级的目的。毕竟,如果您只想更改标签的文本,那么使用 session 有什么意义呢?)

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

  • 如果不是回发,则 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 .

关于.net - session 对象不更新 ASP.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2725279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com