我正在开发一个电子商务网站,用户将在其中购买产品。因为我已经做了一个缓存并将项目添加到缓存中。我已经使用添加按钮对产品进行了用户控制(用于购买将商品添加到购物车的产品)。添加按钮将调用休闲方法
public void itemAddTocart(string[] arg, int itemQty)
{
CartDT=(DataTable)Cache["Cart"];
if (CartDT==null)
{
DataTableColumn();
}
DataRow dr = CartDT.NewRow();
dr[0] = arg[0]; //Product_Name
dr[1] = arg[1]; //Product_ID
dr[2] = itemQty; //OrderQTY
dr[3] = Math.Round(Convert.ToDouble(arg[2])).ToString(); //Price
dr[4] = (Double.Parse(arg[2]) * itemQty).ToString(); // calculate total price
dr[5] = 0;
dr[6] = "default";
dr[7] = Convert.ToInt32(arg[3]);
dr[8] = arg[4];
dr[9] = arg[5];
dr[10] = arg[6];
dr[11] = Convert.ToInt32(Session["MinorderAmount"].ToString());
CartDT.Rows.Add(dr);
//CartDT.DefaultView.Sort = "SuppEmailID";
Cache["cart"] = CartDT;
}
但是在将项目添加到购物车后必须向用户显示购物车中的更改,因为我刷新了整个页面,因此页面加载中的代码将填充购物车,这将需要很长时间,这对用户这样做不利,因为此事件是从用户控件触发的,因此我无权访问页面控件
所以我决定调用将在使用CacheItemUpdateCallback 委托更新缓存时触发的方法
这将被添加为
创建代理
CacheItemUpdateCallback CacheItemUpdateCallbackDel=new CacheItemUpdateCallback (CacheItemUpdateCallbackMethod);
添加它
Cache.Insert("ProductData", PD, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemUpdateCallbackDel);
方法
public void CacheItemUpdateCallbackMethod(string key, CacheItemUpdateReason reason, out object expensiveObject, out CacheDependency dependency, out DateTime absoluteExpiration, out TimeSpan slidingExpiration)
{
setCartSuppWise();
}
但它给了我错误
必须在控制离开当前方法之前分配 out 参数“expensiveObject”
必须在控制离开当前方法之前分配 out 参数“依赖项”
必须在控制离开当前方法之前分配 out 参数“absoluteExpiration”
必须在控制离开当前方法之前分配 out 参数 'slidingExpiration'
我是第一次使用缓存,所以我可能犯了错误或可能犯了错误的概念,所以请帮我解决这个问题