2013-03-17 104 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();