2013-03-17 83 views
0

我想要输入用户键入的名称,然后使用会话状态在另一个aspx页面上显示此名称。asp.net中的Cookie和会话状态

在页面,用户类型的名称我的代码是

Session["name"] = TextBox1.ToString(); //Store the session state in a variable called name from the text box. 

Response.Redirect("page2.aspx"); 

现在在page2.aspx我曾尝试调用这个变量,但似乎没有任何工作。

我页面上的空label1的,所以我想的名字将被存储到空标签

Label1 = Session["name"]; 

错误消息是对象类型转换为System.Web.UI.WebControlers.Label

+0

注意使用'ToString()',因为如果会话不包含'username',它会抛出异常;改用'(string)Session [“username”]'。 – Silvermind 2013-03-17 16:00:09

回答

2
Session["name"] = TextBox1.Text.ToString();  

Label1.Text = Session["name"].ToString() 

有两个误区:第一,你试过分配Label1变量,而不是标签的文本,因此错误你知道的。 Session[key]回报object,而Label1的类型是System.Web.UI.WebControlers.Label

第二个 - 你所设置的值user会话价值,并试图通过username变量访问它。

+0

这已经解决了这个问题,谢谢,虽然现在在page2.aspx而不是显示它的名字显示'System.Web.UI.WebControls.Text'我猜这意味着我没有正确保存名称? – 2013-03-17 15:56:29

+0

@JoshuaHornby更新。你也错过了page1上的'Text'。 – J0HN 2013-03-17 15:58:32

+0

非常感谢。 – 2013-03-17 16:00:56

1

Session["username"]是对象类型,不能通过隐式转换赋给label。你将有一个字符串Session["username"]和调用ToString()将给,那么你可以分配用户名标签文本属性。

Label1.Text = Session["username"].ToString(); 
1

这是更好地做到这一点,因为它如果值为null不会抛出异常:

Label1.Text = (string)Session["username"]; 

如果您确信username设置比你可以这样做:

Label1.Text = Session["username"].ToString();