【问题标题】:unable to change cookie value set in javascript?无法更改在 javascript 中设置的 cookie 值?
【发布时间】:2012-10-29 23:20:49
【问题描述】:

我将 <asp:CheckBox OnClick=""> 设置为执行以下操作的 JavaScript 函数:

document.cookie = "cv0_value=1";

我正在以以下方式在 .Net 代码隐藏中检查此值,并且一切似乎都工作正常。

cv0_value = Request.Cookies["cv0_value"].Value == "0" ? false : true;

问题是,当我稍后尝试重置 .Net 代码隐藏中的值时,它似乎不会影响 cookie。

HttpContext.Current.Request.Cookies["cv0_value"].Value = "0";

在代码隐藏中再次检查该值时,我发现它仍然设置为 JavaScript 中设置的原始值。

我也尝试反复调用 Page_Load 方法,检查请求和响应。尽管在再次调用 Page_Load 时使用更新的值设置了响应,但请求包含原始值。

正如下面 cmets 中所讨论的,我认为该问题可能是由于引用了静态方法,但我发现 this 解决了该问题。由于我已经提到 HttpContext.Current.Response 在我的实例中这似乎不是问题。

谁能解释一下可能发生了什么?

【问题讨论】:

  • 您在请求周期的哪个时间点更改值?
  • 值正在通过来自 Page_Init 的调用进行更改。表单是正在呈现的用户控件的集合。
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。

标签: c# javascript asp.net .net cookies


【解决方案1】:

设置值后,请务必保存。

HttpCookie cookie = HttpContext.Current.Request.Cookies["cv0_value"]
if (cookie != null)
{
   cookie.Value ="0";
   HttpContext.Current.Response.Cookies.Add(cookie)
}

【讨论】:

  • 这个简单吗?我试过后会回复你的。谢谢。
  • +1。 @McArthey,是的,是的-将 Response 用于响应数据...通常,您应该将 Request 中的所有内容视为只读(因为它来自客户端并且永远不会返回),并且 Response 中的所有内容或多或少都是只写的主要目的是向客户端发送更改。
  • 不幸的是,这似乎不起作用。不过,感谢您对响应和请求的澄清。
  • 我已经从 Page_Load 调用了上面的代码。 cv0_value 先前已设置为“1”。多次重新加载页面不会导致值变为“0”。
  • 您确定您的 javascript 没有再次触发并重置值吗?你能展示更多你的代码吗?因为我展示的内容会起作用。
猜你喜欢
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-21
相关资源
最近更新 更多