2012-04-23 4 views
5

Я пытаюсь добавить новый «Заказ» на свою сессию. Я начинаю создавать сессию в моем файле Global.aspx под session_start:Что вызывает исключение nullreference в этом коде?

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

На моей странице входа я сделать новую сессию:

Session["userID"] = "User"; 
     ((Order)Session["Cart"]).UserID = userID; 

Тогда на моей странице магазина я хочу, чтобы добавить материал в сессия:

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

В этой последней строке я получаю исключение исключения для исключения. Почему это может быть?


Вот мои два класса:

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.

Смежные вопросы