我想使用Session制作购物车。我所做的是使用一个基础控制器,我在Session [“购物车”]中分配一个新购物车。
正如预期的那样,当我浏览不同页面并返回“购物车”页面时,购物车仍然存在,其中包含产品。
但是一旦我登录,我的会话就是空的。如何在登录后保持会话活动,或者将以前的会话数据分配给新会话?
我的BaseController类:
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
if(Session["cart"] == null)
{
Session["cart"] = new Order();
}
}
我的Global.asax文件:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
protected void Application_AuthenticateRequest()
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.Identity is FormsIdentity)
{
var id = (FormsIdentity)HttpContext.Current.User.Identity;
var ticket = (id.Ticket);
ticket = FormsAuthentication.Decrypt(id.Ticket.Name);
if (!string.IsNullOrEmpty(ticket.UserData))
{
string userData = ticket.UserData;
string[] roles = userData.Split(',');
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
}
}
}
}
}
protected void Session_Start(object sender, EventArgs e)
{
}
protected void Session_End(object sender, EventArgs e)
{
}
我觉得这个global.asax文件中有一些事情要做,但我不太清楚。谢谢你的帮助!