5

セッションに新しい「注文」を追加しようとしています。Global.aspxファイルのSession_Startでセッションの作成を開始します。

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

この最後の行で、attnullreference例外が発生します。なぜそうなるのでしょうか?


これが私の2つのクラスです。

   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

2 に答える 2

4

OrderRowを使用する前に、そのインスタンスを作成する必要があります。私はそのようにコンストラクターでそれを行うことをお勧めします...

これをOrderクラスに追加します

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

    public Order() {
      OrderRow = new List<OrderRows>();
    }
}
于 2012-04-23T18:23:13.790 に答える
2

新しい注文を作成すると、提出されたOrderRowはnullになります。OrderコンストラクターでOrder行を初期化する必要があります。

于 2012-04-23T18:21:42.033 に答える