zoukankan      html  css  js  c++  java
  • 牛腩购物26:购物车页面的整合,判断是否是验证了登陆用户

    点击立即购买-> 把商品加入到购物车中->弹出一个选择框,选择 是到 购物车还是继续购物-> 

    shopcart.aspx->order_modify.aspx->order_confirm.aspx->order_ok.aspx

    1:是否是登陆用户  User.Identity.IsAuthenticated 

    image

    2:在tool.cs 工具类里面增加一个后台执行 js 的方法。(要注意这里的 js 加了一个 defer 表示网页全部执行之后,再执行 js。相当于是 body加载完之后,才执行js,这样可以避免,图片还没有加载完就弹出了js,那样的话,就会显示空白的图或者是空白的背景,所以要加  defer )

    /// <summary>后台执行alert方法
            /// 
            /// </summary>
            /// <param name="mes"></param>
            /// <param name="_page"></param>
            public static void alert(string mes, Page _page)
            {
                _page.ClientScript.RegisterStartupScript(_page.GetType(), "message", "<script language='javascript' defer>
    alert('" + mes + "');</script>");
            }
    
            /// <summary>后台执行javascript代码
            /// 
            /// </summary>
            /// <param name="js">js代码,不需要写外面的script type·</param>
            /// <param name="_page"></param>
            public static void ExecJs(string js, Page _page)
            {
                _page.ClientScript.RegisterStartupScript(_page.GetType(), "ExecJs", "<script language='javascript' defer>
    " + js + "</script>");
            }
    
            /// <summary>后台执行alert方法,并跳转到指定页面
           /// 
           /// </summary>
           /// <param name="mes">alert的语句</param>
           /// <param name="url">跳转到的页面</param>
           /// <param name="_page"></param>
            public static void alert(string mes,string url, Page _page)
            {
                if (!string.IsNullOrEmpty(url))
                {
                    _page.ClientScript.RegisterStartupScript(_page.GetType(), "message", "<script language='javascript' defer>
    alert('" + mes + "');location.href='" + url + "'</script>");
                }
                else
                {
                    _page.ClientScript.RegisterStartupScript(_page.GetType(), "message", "<script language='javascript' defer>
    alert('" + mes + "');</script>");
                }
            }

    3:用户注销退出

    FormsAuthentication.SignOut();
                
    Session["cart"] = null; //退出登录的时候,要把购物车给清空掉
                
    Response.Redirect("~/default.aspx");

    4:批量添加进购物车,用到 checkbox

    image

    //批量添加进购物车
            protected void btnAdd_Click(object sender, EventArgs e)
            {
                //我们在批量添加进购物的时候,需要对 收藏的 rep 进行循环,来判断到底是 哪个 checkbox 被选中了,选中的话,获取商品id
    
                foreach (RepeaterItem item in repFav.Items)
                {
                    CheckBox chk = item.FindControl("chkId") as CheckBox;
                    if (chk.Checked==true)
                    {
                        string proid = (item.FindControl("hfProid") as HiddenField).Value;
    
                        Model.Product pt = new DAL.ProductDAO().GetModel(int.Parse(proid));
    
                        Model.User u = new DAL.UserDAO().GetModel(User.Identity.Name);
                        decimal price = 0;
                        if (pt != null && u != null)
                        {
                            if (u.type == "vip")    //如果是会员,则是会员价
                            {
                                price = pt.vipprice;
                            }
                            else
                            {
                                price = pt.memberprice;
                            }
                        }
    
    
    
                        if (Session["cart"] != null)
                        {
                            //如果不等于空的话,我们就先取出来,然后再加进去
                            Niunan.Shop.Model.ShopCart sc = Session["cart"] as Niunan.Shop.Model.ShopCart;
                            sc.Add(int.Parse(proid), new Model.ShopItem
                            {
                                proid = int.Parse(proid),
                                price = price,
                                quantity = 1
                            });
                            Session["cart"] = sc;
    
                        }
                        else
                        {
                            Niunan.Shop.Model.ShopCart sc = new Model.ShopCart();
                            sc.Add(int.Parse(proid), new Model.ShopItem
                            {
                                proid = int.Parse(proid),
                                price = price,
                                quantity = 1
                            });
    
                            //然后把购物车,放到session里面
                            Session["cart"] = sc;
                        }
    
                        //最后弹出提示  是继续购买,还是去购物车
                        Utility.Tool.ExecJs("if(confirm('添加成功,是否跳转到购物车?')){location.href='/shopcart.aspx'}
    else{location.href='" + Request.Url.ToString() + "'}", this.Page);
                    }
                }
            }

    5:Repeater.ItemDataBound 事件

    该事件在 Repeater 控件中的某一项被数据绑定后但尚未呈现在页面上之前发生。

    //当rep循环绑定的时候,执行的事件
            protected void rep_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
                {
                    string proid = (e.Item.FindControl("hfProid") as HiddenField).Value;
    
                    Model.Product pt = new DAL.ProductDAO().GetModel(int.Parse(proid));
                    if (pt != null)
                    {
                        //再在  rep 里面找控件
                        Literal proname = e.Item.FindControl("litProName") as Literal;
                        Literal litMember = e.Item.FindControl("litMember") as Literal;
                        Literal litVip = e.Item.FindControl("litVip") as Literal;
                        Literal litXiaoJi = e.Item.FindControl("litXiaoJi") as Literal;
    
                        proname.Text = pt.proname;
                        litMember.Text = pt.memberprice.ToString("c2");
                        litVip.Text = pt.vipprice.ToString("c2");
                    }
                }
            }

  • 相关阅读:
    AngularJs学习——常用表单指令练习
    JavaScript知识递归实现数组中指定后代元素的查找
    JavaScript知识之判断字符串中出现最多的字符及次数
    CSS3知识之立方体动画效果
    CSS知识之 background-size 用法详细介绍
    CSS知识之 background-position 用法详细介绍
    CSS3知识之filter滤镜效果
    CSS3知识之折角效果
    CSS3知识之阴影box-shadow
    JS利用 Sea.js 实现模块化:拖拽、缩放及范围限制
  • 原文地址:https://www.cnblogs.com/iceicebaby/p/2446201.html
Copyright © 2011-2022 走看看