2012-04-23 188 views
5

我嘗試在我的會話中添加一個新的「訂單」。我開始在我的Global.aspx文件中創建一個會話在session_start下:在此代碼中導致nullreference異常的原因是什麼?

Session.Add("Cart", new WebShopData.Order()); 

在我的登錄頁面,我提出一個新的Session:

Session["userID"] = "User"; 
     ((Order)Session["Cart"]).UserID = userID; 
在我的店鋪頁面

然後我想的東西添加到session:

if ((Order)Session["Cart"] != null) 
((Order)Session["Cart"]).OrderRow.Add(new OrderRows({ArticleID = 2, Quantity = 1) }); 

在這最後一行我得到att nullreference異常。爲什麼會這樣?


這裏是我的兩個類:

public class Order 
    { 
    public List<OrderRows> OrderRow { get; set; } 
    public string Address { get; set; } 
    public string City { get; set; } 
    public string Zip { get; set; } 
    public int UserID { get; set; } 
    } 

    public class OrderRows 
    { 
    public int ArticleID { get; set; } 
    public int Quantity { get; set; } 

    public override string ToString() 
    { 
      return string.Format("Artikel: {0}, Antal: {1}.\n", ArticleID, Quantity); 
    } 
    } 

回答

4

您需要在使用它之前創建一個OrderRow的實例。我建議做它在像這樣的構造......

添加到您的Order類

public class Order { 
    ....other stuff... 

    public Order() { 
     OrderRow = new List<OrderRows>(); 
    } 
} 
2

當你創建一個新的訂購申請OrderRow爲空。您必須初始化Order構造函數上的Order行。

相關問題