做例子,用cookie来存储了商品。 添加,修改已经做好了。在删除单条的时候犯难了。 不知道怎么删,如果时间设置过期那么所有的cookie都删除了。 而我只要删一条如 我存储的是商品+数量 用|分割。 1,20|2,20|3,1|4,2
用户点击删除时 应该移除掉的是 一个商品和数量。如删除商品4那么只是把4,2给移除了而不是全部求教怎么搞的?????代码也分享了public class CardShop { public static String CookieName = "SHOPPING_INFO";
/// <summary>
/// 添加商品进购物车
/// </summary>
/// <param name="productId"></param>
/// <param name="num"></param>
/// <returns></returns>
public static bool AddProduct(int productId, int num) {
HttpCookie hc = null;
String oldCookieValue;
String NewValue;
hc = HttpContext.Current.Request.Cookies[CookieName];
if (hc == null) //如果Cookie不存在 则直接新建Cookie 保存商品id和数量;
{
hc = new HttpCookie(CookieName);
hc.Expires = DateTime.Now.AddDays(7);
hc.Value = productId.ToString() + "|" + num.ToString();
}
else //假设Cookie存在 则处理
{
oldCookieValue = hc.Value;
NewValue = AddCookieValue(oldCookieValue, productId, num);
hc.Value = NewValue; } HttpContext.Current.Response.AppendCookie(hc); //Cookie写入Response
return true; //结束
}
/// <summary>
/// 已存在Cookie则追加商品
/// </summary>
/// <param name="Value"></param>
/// <param name="NewProductId"></param>
/// <param name="Num"></param>
private static string AddCookieValue(string Value, int NewProductId, int Num) {
String NewValue = "";
bool IsAdd = false;
string[] productList = Value.Split(',');
for (int i = 0; i < productList.Length; i++) {
string[] productInfo = productList[i].Split('|');
if (productInfo[0] == NewProductId.ToString()) {
IsAdd = true;
NewValue += productInfo[0] + "|" + ((int.Parse(productInfo[1])) + Num).ToString() + ",";
}
else {
NewValue += productInfo[0] + "|" + productInfo[1] + ",";
} }
if (IsAdd) { NewValue = NewValue.Substring(0, NewValue.Length - 1);
}
else {
NewValue += NewProductId.ToString() + "|" + Num.ToString();
}
return NewValue;
} /// <summary>
/// 获取购物车信息
/// </summary>
/// <returns></returns>
public static string GetShoppingInfo() {
HttpCookie hc = null;
hc = HttpContext.Current.Request.Cookies[CookieName];
if (hc == null) //如果Cookie存在 则直接新建Cookie 保存商品id和数量;
{
return null;
}
else {
return hc.Value;
}
}
}
用户点击删除时 应该移除掉的是 一个商品和数量。如删除商品4那么只是把4,2给移除了而不是全部求教怎么搞的?????代码也分享了public class CardShop { public static String CookieName = "SHOPPING_INFO";
/// <summary>
/// 添加商品进购物车
/// </summary>
/// <param name="productId"></param>
/// <param name="num"></param>
/// <returns></returns>
public static bool AddProduct(int productId, int num) {
HttpCookie hc = null;
String oldCookieValue;
String NewValue;
hc = HttpContext.Current.Request.Cookies[CookieName];
if (hc == null) //如果Cookie不存在 则直接新建Cookie 保存商品id和数量;
{
hc = new HttpCookie(CookieName);
hc.Expires = DateTime.Now.AddDays(7);
hc.Value = productId.ToString() + "|" + num.ToString();
}
else //假设Cookie存在 则处理
{
oldCookieValue = hc.Value;
NewValue = AddCookieValue(oldCookieValue, productId, num);
hc.Value = NewValue; } HttpContext.Current.Response.AppendCookie(hc); //Cookie写入Response
return true; //结束
}
/// <summary>
/// 已存在Cookie则追加商品
/// </summary>
/// <param name="Value"></param>
/// <param name="NewProductId"></param>
/// <param name="Num"></param>
private static string AddCookieValue(string Value, int NewProductId, int Num) {
String NewValue = "";
bool IsAdd = false;
string[] productList = Value.Split(',');
for (int i = 0; i < productList.Length; i++) {
string[] productInfo = productList[i].Split('|');
if (productInfo[0] == NewProductId.ToString()) {
IsAdd = true;
NewValue += productInfo[0] + "|" + ((int.Parse(productInfo[1])) + Num).ToString() + ",";
}
else {
NewValue += productInfo[0] + "|" + productInfo[1] + ",";
} }
if (IsAdd) { NewValue = NewValue.Substring(0, NewValue.Length - 1);
}
else {
NewValue += NewProductId.ToString() + "|" + Num.ToString();
}
return NewValue;
} /// <summary>
/// 获取购物车信息
/// </summary>
/// <returns></returns>
public static string GetShoppingInfo() {
HttpCookie hc = null;
hc = HttpContext.Current.Request.Cookies[CookieName];
if (hc == null) //如果Cookie存在 则直接新建Cookie 保存商品id和数量;
{
return null;
}
else {
return hc.Value;
}
}
}
解决方案 »
- 水晶报表中编程问题
- asp.net c#论坛完整代码发布--希望对大家的学习有帮助!
- 请问,在非page子类中如何获取Session变量?
- 做这样一个站点多少钱?知行情者告之,谢谢!!在线等。
- 再请教一个<title id=mytitle runat=server>的问题
- 请问怎么使用panel?我觉得不好用:1.不能随意在其上拖放和控制控件位置?2.其它控件怎么和它关联?
- 如何将多表内容绑定到同一控件
- treeview!点击某个节点前面的“+”号,如何判断此“+”后面的节点(是哪个节点?),注意并非是选中节点,我该如之奈何?
- 我在VS.net工具中调试ASP.net,为什么不能?
- 一般处理程序中checkbox传值问题
- DropDownList 循环取值的问题
- 页面跳转传值的问题?
cookie是客户端的东西,删除首先是没有权限的,怎么弄?只能设置过期,但是过期的话结果是整个结果集都是空的了
Sesson 直接保存list<实体类> cookie我没搞过。帮不上忙
1,卡
2,每次要判断哪个用户登录的,在查出来
3,2台以上服务器布置的项目就无法用
4,想提醒用户你还有没买的东西,而不是第二次来了东西就消失了。
5,。。
public static void RemoveShoppingCart(int ProductID)
{
if (HttpContext.Current.Request.Cookies["ShoppingCart"] == null)
{
//Do nothing
}
else
{
HttpCookie oCookie = (HttpCookie)HttpContext.Current.Request.Cookies["ShoppingCart"];
//Set Cookie to expire in 3 hours
char[] sep = { '|' };
oCookie.Expires = DateTime.Now.AddHours(3);
//Check if Cookie already contain same item
string sProdID = oCookie.Value.ToString(); string[] arrCookie = sProdID.Split(sep);
string[] arrCookie2 = new string[arrCookie.Length - 1];
int j = 0;
for (int i = 0; i < arrCookie.Length; i++)
{
if (arrCookie[i].Trim().Remove(arrCookie[i].IndexOf('*')) != ProductID.ToString())
{
arrCookie2[j] = arrCookie[i];
j++;
}
}
string sCookieID = "";
for (int i = 0; i < arrCookie2.Length; i++)
{
sCookieID = sCookieID + arrCookie2[i] + "|";
}
if (sCookieID.Length > 0)
{
oCookie.Value = sCookieID.Substring(0, sCookieID.Length - 1);
}
else
{
oCookie.Value = "";
} //Add back into the HttpContext.Current.Response Objects.
HttpContext.Current.Response.Cookies.Add(oCookie);
}
不能删除cookie,设置其过期。