我正在asp.net和c#中构建一个Web应用程序,我将文本框的文本存储在Session变量中,如下所示:
Session["data"]=TextBox1.Text;
并且在按钮点击事件中我将用户重定向到另一个页面。在第二页我使用此变量会话[“数据”] ,在第2页中有一个后退按钮我在哪里再次重定向到第1页,其中textbox1存在。现在在按钮点击事件,我重定向到page2,事件是这样的代码,
Session["data"]=TextBox1.Text;
Response.Redirect("page2.aspx");
现在,当我访问Session [“data”]的值时,它给了我之前的值。由于TextBox1的内容可能会被更改,因此这些更改尚未显示。
请告诉我哪里出错了。
答案 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。