出错部门的代码: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;
}
} }
}
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;
}
} }
}
确保Session["MyCart"]存在
if (objCart != null)
{
...
}
我是楼主
===================经过测试
Cart objCart=(Cart)Session["MyCart"];之后 objCart依然为空我应该怎么做呢??
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
}