出错部门的代码:string bookID=dtgList.DataKeys[(int)e.Item.ItemIndex].ToString();

book objBook=new book();
Cart objCart=(Cart)Session["MyCart"];

objBook.BookID=bookID;
objBook.BookName="abc";
objBook.Num=1;
objBook.Price=29;
objCart.Add(objBook);
Session["MyCart"]=objCart;用到的两个类:
using System;namespace ShopCart.Class
{
/// <summary>
/// book 的摘要说明。
/// </summary>
public class book
{
string bookID;
string bookName;//书名
decimal price;//单价
int num;//数量
decimal sum=0m;//一种书的总金额

public book()
{ } /// <summary>
/// BookID属性
/// </summary>
public string BookID
{
get
{
return bookID;
}
set
{
bookID=value;
}
} /// <summary>
/// 书名
/// </summary>
public string BookName
{
get
{
return bookName;
}
set
{
bookName=value;
}
} /// <summary>
/// 单价
/// </summary>
public decimal Price
{
get
{
return price;
}
set
{
price=value;
sum=num*price;
}
} /// <summary>
/// 数量
/// </summary>
public int Num
{
get
{
return num;
}
set
{
num=value;
sum=num*price;
}
} /// <summary>
/// 一种书总的金额
/// </summary>
public decimal Sum
{
get
{
return sum;
}
set
{
sum=value;
}
} }
}
using System;
using System.Collections;namespace ShopCart.Class
{
/// <summary>
/// Cart 的摘要说明。
/// </summary>
public class Cart:IEnumerable
{
Hashtable ht; /// <summary>
/// 两个构造函数
/// </summary>
public Cart()
{
ht=new Hashtable();
}
public Cart(int count)
{
ht=new Hashtable(count);
} /// <summary>
/// 放入新书到购物车
/// </summary>
/// <param name="b"></param>
public void Add(book b)
{
//如果车中已经有这本书了,在数量加
if(ht.ContainsKey(b.BookID))
{
((book)ht[b.BookID]).Num=((book)ht[b.BookID]).Num+b.Num;
}
else
{
ht.Add(b.BookID,b);
}
} /// <summary>
/// 删除某一种书
/// </summary>
/// <param name="bookID"></param>
public void Remove(string bookID)
{
if(ht.ContainsKey(bookID))
ht.Remove(bookID);
} /// <summary>
/// 清空车
/// </summary>
public void Clear()
{
ht.Clear();
} public book this[string bookid]
{
get
{
if(ht.ContainsKey(bookid))
return (book)ht[bookid];
return null;
}
}
#region IEnumerable 成员 public IEnumerator GetEnumerator()
{
// TODO:  添加 Books.GetEnumerator 实现
return ht.Values.GetEnumerator();
} #endregion
/// <summary>
/// 统计书的总数
/// </summary>
public int Count
{
get
{
return ht.Count;
}
} }
}

解决方案 »

  1.   

    Cart objCart=(Cart)Session["MyCart"];
    确保Session["MyCart"]存在
      

  2.   

    如果Session["MyCart"]不存在,执行Cart objCart = new Cart();
      

  3.   

    Cart objCart= Session["MyCart"] as Cart;
    if (objCart != null)
    {
    ...
    }
      

  4.   

    ===================
    我是楼主
    ===================经过测试
    Cart objCart=(Cart)Session["MyCart"];之后 objCart依然为空我应该怎么做呢??
      

  5.   

    to 经过测试
    Cart objCart=(Cart)Session["MyCart"];
    之后 objCart依然为空
    我应该怎么做呢??正确的转换应该用如下的方式比较好Cart objCart= Session["MyCart"] as Cart;
    if (objCart != null)
    {
       // Get an object typed "Cart"
    }
    else
    {
        // you should do other operation here
    }