MVC使用cookie跨页面显示数据

有时候我们需要把上个页面的某些数据显示在当前这个页面,那么我们应该怎么做呢?其实我们可以使用cookie把数据存储在你的浏览器中,然后在你需要用的时候就把它拿出来用。

举个例子:

在我做的这个餐饮管理系统中的这一系列的步骤

客人来了——进行开台——点菜操作。

开台的时候我需要把我给客人开台的信息传到另一个页面,然后给这个客人点菜。这个时候呢,我的点菜页面需要显示刚刚给客人的开台信息。

开台操作的模态框:

把开好的台的信息存储到浏览器(开台的餐桌号、就餐人数、开台时间),以便在下个点菜页面上显示

存储开台相关信息的代码:

  //查询刚新增的开台信息
                    List<tb_OpenTable> dbOpen = (from tbOpen in myModel.tb_OpenTable
                                                 where tbOpen.OpenTableId == openTab.OpenTableId
                                                 select tbOpen).ToList();

                    //查询餐桌信息
                    List<tb_TableInfor> dbTable = (from tbTable in myModel.tb_TableInfor
                                                   where tbTable.TableId == TableID
                                                   select tbTable).ToList();

                    //cookie保存数据放到另一页面
                    //记住开台信息,保存开台信息
                    HttpCookie cookie = new HttpCookie("table");
                    cookie.Expires = DateTime.Now.AddDays(7);//设置cookie过期时间 7天后
                    cookie["DinersNum"] = dbOpen[0].PeopleNum.ToString();//吃饭人数
                    cookie["OpenTime"] = dbOpen[0].OpenTableTime.ToString();//开台时间
                    cookie["TableCode"] = dbTable[0].TableCode.ToString();//餐桌编号
                    cookie["TableId"] = dbOpen[0].TableId.ToString();//餐桌id
                    cookie["OpenTableId"] = dbOpen[0].OpenTableId.ToString();//开台id


                    //将cookie通过Response告诉浏览器处理cookie
                    Response.Cookies.Add(cookie);

在需要用到这些开台信息的视图上把他ViewBag到点菜页面。

string DinersNum = "";//就餐人数
            string TableCode = "";//当前餐桌号
            string OpenTime = "";//开台时间
            string TableId = "";//餐桌id
            string OpenTableId = "";//开台id


            //读取浏览器请求传递的cookie
            HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["table"];


            if (cookie != null)//判断cookie是否存在
            {
                if (cookie["DinersNum"] != null)
                {
                    DinersNum = System.Web.HttpContext.Current.Server.UrlDecode(cookie["DinersNum"]);
                }
                if (cookie["OpenTableId"] != null)
                {
                    OpenTableId = System.Web.HttpContext.Current.Server.UrlDecode(cookie["OpenTableId"]);
                }
                if (cookie["TableId"] != null)
                {
                    TableId = System.Web.HttpContext.Current.Server.UrlDecode(cookie["TableId"]);
                }
                if (cookie["TableCode"] != null)
                {
                    TableCode = System.Web.HttpContext.Current.Server.UrlDecode(cookie["TableCode"]);
                }
                if (cookie["OpenTime"] != null)
                {
                    OpenTime = System.Web.HttpContext.Current.Server.UrlDecode(cookie["OpenTime"]);
                }

            }

            ViewBag.DinersNum = DinersNum;//就餐人数
            ViewBag.TableCode = TableCode;//餐桌编码
            ViewBag.OpenTime = OpenTime.ToString();//开台时间
            ViewBag.TableId = TableId;//餐桌id
            ViewBag.OpenTableId = OpenTableId;//开台id


            return View();

然后在这个页面上的视图接收控制器中存储的cookie

代码如下:

 <ul>
            <li class="headerTitle" id="headerTitle" name="TableCode">当前餐桌号:@ViewBag.TableCode</li>
            <li class="headerTitle2" id="headerTitle2" name="PeopleNum">就餐人数:@ViewBag.DinersNum</li>
            <li class="headerTitle3" id="headerTitle3" name="OpenTableTime">开台时间:@ViewBag.OpenTime</li>
            <li type="hidden" class="TableId" id="TableId" name="TableId" value="@ViewBag.TableId"></li>
            <li type="hidden" class="OpenTableId" id="OpenTableId" name="OpenTableId" value="@ViewBag.OpenTableId"></li>
        </ul>

之后就有了在点菜页面上显示的开台页面的相关信息:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值