如何在c#注销后让购物车停留24小时?

时间:2017-11-07 10:29:52

标签: c# asp.net

我有一个工作正常的购物车但是如果用户没有下订单,那么在退出后购物车项目不会停留。所以任何人都可以帮助如何让购物车商品保留至少1天。我没有使用任何数据库,这里有我想做的事情:

   if (!IsPostBack)
    {
        DataTable dt = new DataTable();
        DataRow dr;
        dt.Columns.Add("sno");
        dt.Columns.Add("Game_Name");
        dt.Columns.Add("Platform");
        dt.Columns.Add("Price");
        dt.Columns.Add("Quantity");
        dt.Columns.Add("Image");
        dt.Columns.Add("cost");
        dt.Columns.Add("totalcost");
        //BindGridView();

        if (Request.QueryString["Game_ID"] != null)
        {
            if (Session["Buyitems"] == null)
            {

                dr = dt.NewRow();
                String mycon = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True";
                SqlConnection scon = new SqlConnection(mycon);
                String myquery = "select * from Game where Game_ID=" + Request.QueryString["Game_ID"];
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = myquery;
                cmd.Connection = scon;
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                DataSet ds = new DataSet();
                da.Fill(ds);
                dr["sno"] = 1;                   
                dr["Game_Name"] = ds.Tables[0].Rows[0]["Game_Name"].ToString();
                dr["Platform"] = ds.Tables[0].Rows[0]["Platform"].ToString();
                dr["Image"] = ds.Tables[0].Rows[0]["Image"].ToString();
                dr["Price"] = ds.Tables[0].Rows[0]["Price"].ToString();
                dr["Quantity"] = ds.Tables[0].Rows[0]["Quantity"].ToString();

                dt.Rows.Add(dr);
                GridView1.DataSource = dt;
                GridView1.DataBind();
                Session["buyitems"] = dt;
            }
            else
            {

                dt = (DataTable)Session["buyitems"];
                int sr;
                sr = dt.Rows.Count;

                dr = dt.NewRow();
                String mycon = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True";
                SqlConnection scon = new SqlConnection(mycon);
                String myquery = "select * from Game where Game_ID=" + Request.QueryString["Game_ID"];
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = myquery;
                cmd.Connection = scon;
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                DataSet ds = new DataSet();
                da.Fill(ds);
                dr["sno"] = sr + 1;                    
                dr["Game_Name"] = ds.Tables[0].Rows[0]["Game_Name"].ToString();
                dr["Platform"] = ds.Tables[0].Rows[0]["Platform"].ToString();
                dr["Image"] = ds.Tables[0].Rows[0]["Image"].ToString();
                dr["Price"] = ds.Tables[0].Rows[0]["Price"].ToString();
                dr["Quantity"] = ds.Tables[0].Rows[0]["Quantity"].ToString();

                dt.Rows.Add(dr);
                GridView1.DataSource = dt;
                GridView1.DataBind();
                Session["buyitems"] = dt;

            }
        }
        else
        {
            dt = (DataTable)Session["buyitems"];
            GridView1.DataSource = dt;
            GridView1.DataBind();
            }

    }

我使用命令参数从前一页获取每个游戏的ID。

3 个答案:

答案 0 :(得分:0)

如果您存储在Cookie中,请将它们设置为在24小时后过期。 您可以维护购物车添加时间并通过作业将其删除,也可以在检查时手动删除,并在从数据库中提取项目时删除。

答案 1 :(得分:0)

使用Cookie保存购物车以供日后使用。如果用户即使没有登录也会将商品添加到卡中,这是一个选项。

public void SaveCart2Cookie(List<string> items) 
{
    string cartList = string.Join(",", items);

    if (Request.Cookies["CartCookie"] == null)
        Response.Cookies["CartCookie"].Value = cartList;
    else
    {
        Create new Cart Cookie
    }

    Response.Cookies["CartCookie"].Expires = DateTime.Now.AddHours(24);
}

答案 2 :(得分:0)

您可以使用Cookie,或者如果您使用现代浏览器定位用户,也可以使用Web Storage API,您必须使用客户端代码进行控制。

我建议您在问题中添加一些代码,以便我们提供更好的答案。