1

<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が再度呼び出されたときに更新された値で応答を設定したにもかかわらず、要求には元の値が含まれています。

以下のコメントで説明されているように、この問題は静的メソッドからの参照が原因である可能性があると思いましたが、これで問題が解決することがわかりました。私はすでにHttpContext.Current.Responseを参照しているので、私のインスタンスでは問題ではないようです。

誰かが何が起こっているのか説明できますか?

4

1 に答える 1

2

値を設定したら、必ず保存してください。

HttpCookie cookie = HttpContext.Current.Request.Cookies["cv0_value"]
if (cookie != null)
{
   cookie.Value ="0";
   HttpContext.Current.Response.Cookies.Add(cookie)
}
于 2012-11-09T16:48:31.750 に答える