c# - 在页面之间传递 session 变量

标签 c# asp.net session-variables

我想知道我在使用 asp.net session 将变量从一个页面传递到另一个页面时遇到了什么问题。

我已将代码精简为一个文本框以查看发生了什么。我只是想获取文本框的值并将其显示在确认页面上。单击该按钮后,它会将我转到第二页,但标签是空白的。是的,我的回发 URL 指向第二页。

这是点击按钮:

protected void submit_Click(object sender, EventArgs e)
{
    string name = txtFirstName.Text.Trim();
    Session["name"] = name;
}

这是第二页的页面加载:

protected void Page_Load(object sender, EventArgs e)
{
    lblName.Text = (string)(Session["name"]);
}

除非我一直在看这个很长时间并且错过了一些东西。我已经读过 "How to: Read Values from Session State"来自 MSDN。

最佳答案

您说您已将 PostBackUrl 设置为您的第二页。如果你打算那样做,你需要使用 Page.PreviousPage 来访问你的文本框。但这是最简单的方法:

首先,不要管 PostBackUrl。将 PostBackUrl 设置为您的第二页意味着您告诉第二页处理您的按钮点击,而不是第一页。因此,您的 session 变量永远不会被设置,并且在您尝试拉取它时为空。

这应该适合你。

是的,您也可以使用 QueryString 执行此操作,但如果您不希望用户看到/编辑它,那么 Session 变量会更好。

 protected void submit_Click(object sender, EventArgs e)
 {
      string name = txtFirstName.Text.Trim();
      Session["name"] = name;
      Response.Redirect("PageTwo.aspx");
 }

然后在第二页(你真的不需要 ToString()):

 protected void Page_Load(object sender, EventArgs e)
 {
      if (Session["name"] != null)
      {
           lblName.Text = Session["name"].ToString();
      }
 }

编辑 -- 确保您的按钮点击确实被触发。有人可以纠正我的错误,因为我的大部分工作都是在 VB.NET 中完成的,而不是 C#。但是,如果您不指定 OnClick 值,则不会调用您的函数。

 <asp:Button ID="Button1" runat="server" Text="Click Me!" OnClick="submit_Click" />

关于c# - 在页面之间传递 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19668500/

相关文章:

c# - 什么是阅读 ISomething : ISomethingElse 的正确方法

jquery - 为什么 ClientID 不显示?怎么修

java - Openbravo servlet session

PHP session 为空或无法正常工作

java - 相同的字节数组 => Java 和 C# 中的不同 BigInteger 值

c# - 如何以编程方式向 log4net 添加过滤器?

javascript - 如何通过 Jquery 向 C# 方法发送请求并获取其参数

c# - 如何通过正则表达式检查和提取字符串?

javascript - HTML5音频-录制可以保存文件,但是通过音频控件播放时没有声音

php - 如何将 session 用户名插入mysql数据库