在MVC5中加载View之前访问cookie?

时间:2015-05-05 03:37:14

标签: c# asp.net-mvc

假设我有一个值为“OLD”的cookie,然后我用以下代码更新cookie:

var lang = new HttpCookie("lang");
lang.Value = "NEW";
lang.Expires = DateTime.UtcNow.AddDays(2);

HttpContext.Current.Response.SetCookie(lang); //set updated cookie value

var x = HttpContext.Current.Request.Cookies("lang");

x仍然会将“OLD”作为值,因为它不会被发送到客户端。是否有可能在没有首先发送给客户端的情况下获取更新的值?

3 个答案:

答案 0 :(得分:0)

如果您不想向客户端发送价值并且仅想用于参考,则可以使用TempData来达到您的目的。这可能会有所帮助。

答案 1 :(得分:0)

我认为,你应该在Response中寻找它,而不是在Request中,因为请求 - 它来自客户端。

答案 2 :(得分:0)

问题

您正在HttpContext.Current.Response设置Cookie并尝试在HttpContext.Current.Request中找到它,甚至在下一个请求到达服务器之前。

它不会起作用。

我的建议

对于这种情况,使用cookie是不正确的。您还有其他更适合目的的选项,例如 -

  1. 的ViewData
  2. ViewBag
  3. TempData的
  4. 会话
  5. 视图模型
  6. 答案

    但是如果您仍然希望以这种方式使用Cookie,请在HttpContext.Current.Response中搜索Cookie。我相信你会得到它。

    像这样:

    var cookieValue = HttpContext.Current.Response.Cookies["OLD"].Value