【问题标题】:Session Variable not working in Internet Explorer, but works fine in Firefox / Chrome会话变量在 Internet Explorer 中不起作用,但在 Firefox / Chrome 中可以正常工作
【发布时间】:2011-05-16 16:24:35
【问题描述】:

我们使用 Razor 页面使用 Asp.Net MVC 3 开发了一个 Web 应用程序。

在页面中,我们遇到了用户从菜单中选择项目的问题,这些项目被添加到页面右侧的订单详细信息窗格中,其中多个相同类型的项目被总计,例如3 x 大蒜面包等

为此,我们添加到 T 列表并将其存储在会话变量中,如下代码所示:

List<MunuItems> OrderItems = HttpContext.Session["_OrderItems"] as List<MunuItems>;

MunuItems newItem = new MunuItems();
// Set the newItem values

OrderItems.Add(newItem);
// Add the list to the session
HttpContext.Session.Add("_OrderItems", OrderItems);
// Retrun the partial view
return PartialView("_OrderItems", OrderItems);

这一切在 Firefox 或 Chrome 中都可以正常工作,但是当我在 Internet Explorer 8 / 9 中尝试时,这种行为无处不在。每个项目只能添加 1 个,尝试添加第 2 个项目可能会导致其他项目从列表中删除等。

您可以在这里查看页面http://software.ayslive.com/WR_TakeAway/menu

谁能建议如何在 Internet Explorer 中解决此问题或为什么它在 IE 中不起作用?

【问题讨论】:

  • 听起来好像还有什么问题,因为 Session 独立于浏览器(它存储在服务器上)。

标签: asp.net-mvc internet-explorer


【解决方案1】:

看起来好像您在某处使用 ajax。

很有可能您正在使用“GET”方法并且它已被缓存。如果是这样,请在您的 ajax 调用中尝试 cache: false(默认为 true)。

【讨论】:

  • 谢谢,是的,我们正在使用 Ajax 调用局部视图。你能告诉我我把缓存放在哪里吗:false?
  • 你应该有这样的调用:$.ajax({ url: 'your_url', type: 'GET', cache: false})(GET 也是默认类型)。
  • 哦,我看到你在使用'unobtrusive ajax' --- 你需要看看如何让它not缓存。
  • 你也可以在前面的某个地方尝试$.ajaxSetup({ cache:false }); 来更改全局 ajax 设置。
  • 嗨,是的,我正在使用 Asp.Net MVC Razor 页面。调用是 @Ajax.ActionLink("Add to order", "AddOrderItem", new { ID = Item.id }, new AjaxOptions { UpdateTargetId = "_Orders", InsertionMode = InsertionMode.Replace })
猜你喜欢
  • 2015-02-08
  • 2015-12-30
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 2021-05-30
  • 2019-02-27
相关资源
最近更新 更多