2012-04-23 15 views
5

Intento agregar un nuevo "Pedido" a mi Sesión. Comienzo crear una sesión en mi archivo Global.aspx bajo Session_Start:¿Qué está causando una excepción de nullreference en este código?

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

En mi página de inicio de sesión hago una nueva sesión:

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

Entonces en mi página de la tienda Quiero añadir cosas a la sesión:

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

En esta última línea recibo excepción att nullreference. ¿Por qué podría ser eso?


Aquí están mis dos clases:

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); 
    } 
    } 

Respuesta

4

Debe crear una instancia de OrderRow antes de usarla. Sugiero hacer en el constructor como tal ...

Agregue esto a su clase Order

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

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

Cuando se crea una nueva Orden de la OrderRow presentada es nula. Debe inicializar la fila Order en el constructor Order.

Cuestiones relacionadas