【发布时间】:2014-10-09 04:43:19
【问题描述】:
我的 ASP.NET 网站没有看到最新的 Session 值。单击按钮后将我的表单发送到服务器时,发送回浏览器的结果取决于Session 值。我用Page_Load 方法处理它们。它没有看到最后一次更改 od Session 值,而是在最后一次更改。看起来按钮的事件处理程序是在页面的事件处理程序之前执行的,但我不确定是否是这样。
我尝试用 Page_PreInit 等其他方法编写我的代码,但它仍然是一样的。唯一对我有用的是刷新页面:Response.Redirect(Request.Url.AbsoluteUri); 在任何Session 值发生任何更改后,但它会重置所有控件的值,我希望与以前一样。有没有更好的解决方案?
示例:当它第一次运行时,标签的文本是“单击按钮”,但是当我单击任何按钮时,没有任何反应。当我第二次点击任何一个按钮时,标签的文本是第一次点击的值(即使我点击A然后点击B,点击B后值会变为A)。
表格:
<form id="form1" runat="server">
<div>
<p>
<asp:Label ID="Label1" runat="server" />
</p>
<p>
<asp:Button ID="Button1" runat="server" Text="A" onclick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="B" onclick="Button2_Click" />
</p>
<p>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</p>
</div>
</form>
事件处理程序:
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Session["Letter"].ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["Letter"] = "A";
}
protected void Button2_Click(object sender, EventArgs e)
{
Session["Letter"] = "B";
}
全局方法:
void Session_Start(object sender, EventArgs e)
{
Session["Letter"] = "Click the button";
}
【问题讨论】:
-
show your code!!!..还显示您在代码中初始化/声明会话变量的位置.. 使用 Session{"yourvariable"] 和 HttpContext.Current.Session["yourvariable "] 听起来你也有一些 IsPostBack 问题或 Page_Load 正在重置会话变量 -
我的代码很长,但我会尝试写一些简短的例子,然后编辑我的问题。
-
你在使用
Global.asax这个方法特别初始化protected void Session_Start(object sender, EventArgs e)吗??