有时候我们需要把上个页面的某些数据显示在当前这个页面,那么我们应该怎么做呢?其实我们可以使用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>
之后就有了在点菜页面上显示的开台页面的相关信息: