无法获取会话变量和文本框的更新值

时间:2011-10-18 09:42:45

标签: c# asp.net

我正在asp.net和c#中构建一个Web应用程序,我将文本框的文本存储在Session变量中,如下所示:

Session["data"]=TextBox1.Text;

并且在按钮点击事件中我将用户重定向到另一个页面。在第二页我使用此变量会话[“数据”] ,在第2页中有一个后退按钮我在哪里再次重定向到第1页,其中textbox1存在。现在在按钮点击事件,我重定向到page2,事件是这样的代码,

Session["data"]=TextBox1.Text;
Response.Redirect("page2.aspx");

现在,当我访问Session [“data”]的值时,它给了我之前的值。由于TextBox1的内容可能会被更改,因此这些更改尚未显示。

请告诉我哪里出错了。

3 个答案:

答案 0 :(得分:0)

我不认为你使用的代码是狼人。请你做一个断点并再次检查值是否正确分配 要么 您只需将会话设置为null,然后在click事件上为其分配文本框值。

答案 1 :(得分:0)

我真的不明白你想做什么。你说它有效(Session [“data”]包含TextBox1的文本?)但你没有看到任何变化?你期望发生什么变化?请提供有关此部分问题的更多信息:

  

由于TextBox1的内容可能会更改,因此未显示这些更改。

感谢。

<强>更新 尝试清除或删除会话,然后重新填充。

Session.Remove("data");
Session.Clear();

答案 2 :(得分:0)

阅读本文我认为Respone.Redirect可能会导致您丢失会话数据

Don't redirect after setting a Session variable (or do it right)

  

我在ASP.NET论坛上一遍又一遍地看到的问题是   如下:在登录页面中,如果用户和密码已经存在   验证后,页面开发人员想要重定向到默认页面。   为此,他编写了以下代码:

     

Session["Login"] = true;

     

Response.Redirect("~/default.aspx");

     

嗯,这不起作用。你能   明白为什么?是的,这是因为Redirect和会话变量的方式   工作。创建新会话时(即第一次编写时)   对于Session变量),ASP.NET在客户端上设置了一个易失性cookie   包含会话令牌。在所有后续请求中,以及   只要服务器会话和客户端cookie未过期,   ASP.NET可以查看此cookie并找到正确的会话。怎么办   重定向的做法是向客户端发送一个特殊的头,以便它   询问服务器与其等待的页面不同的页面。   服务器端,在发送此标头后,重定向结束响应。   这是一件非常暴力的事情。 Response.End实际上停止了   使用ThreadAbortException在任何地方执行页面。   这里真正发生的是会话令牌丢失了   战斗。您可以采取一些措施来解决此问题。   首先,在表单身份验证的情况下,我们已经提供了一个   特殊重定向方法:FormsAuthentication.RedirectFromLoginPage。   这种方法很棒,因为它很有效,也因为它会   将用户返回到他首先要求的页面,并且   并不总是违约。这意味着用户可以将受保护的书签   网站上的页面,以及其他内容。你可以做的另一件事就是使用   重定向的重载版本:

     

Response.Redirect("~/default.aspx", false);

     

这不会中止   线程,从而节省会话令牌。实际上,这种超载是   由RedirectFromLoginPage内部使用。事实上,我   会建议总是使用这个重载版本而不是另一个   避免异常的恶劣影响。非超载   版本实际上是保持语法与经典兼容   ASP。