2012-04-23 190 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行。

相关问题