2007-04-25 16:553731人閱讀評論(2)收藏舉報
使用Session的方法應該說很簡單,在一個頁面賦值,另一個頁面調用就可以了。
自己在編制程序時犯了一個大錯誤,即語句的順序搞倒了,如:
Session["UserName"] = nameBox.Text;
Response.Redirect("shuru.aspx");
先賦值再轉頁,而我剛開始是反過來寫了,那 么Session["UserName"] 的值始終為空了。
查了好多資料,終於把問題給解決了~~~吼吼...拿來跟大家分享^_^
一個重要的知識點:
“System.NullReferenceException: 未將對象引用設置到對象的實例”問題可能原因如下:
1、ViewState 對象為Null。
2、DateSet 空。
3、sql語句或Datebase的原因導致DataReader空。
4、聲明字符串變量時未賦空值就應用變量。
5、未用new初始化對象。
6、Session對象為空。
7、對控件賦文本值時,值不存在。
8、使用Request.QueryString()時,所獲取的對象不存在,或在值為空時未賦初始值。
9、使用FindControl時,控件不存在卻沒有做預處理。
10、重復定義造成未將對象引用設置到對象的實例錯誤.
我的錯誤是第六種,Session對象為空.
錯誤原因:在調用 Session["userid"].ToString() 前應先檢查 Session["userid"] 對象是否為 null
在未登錄的情況下, Session["userid"] 的值是null,直接用ToString()方法肯定會出錯的...
我原來的代碼:
protected void Page_Load(object sender, EventArgs e)
{
strIP = Request.UserHostAddress.ToString();
strUserID = Session["userid"].ToString();
strMessage = this.tbMessage.Text;
strPostID = Request["postid"].ToString();
strReplyTime = DateTime.Now.ToString();
}
改正后的代碼:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["userid"] != null && Session["postid"] != null)
{
strIP = Request.UserHostAddress.ToString();
strUserID = Session["userid"].ToString();
strMessage = this.tbMessage.Text;
strPostID = Request["postid"].ToString();
strReplyTime = DateTime.Now.ToString();
}
}