【问题标题】:Cookie (read with ASP:NET) (set with javascript)Cookie(使用 ASP:NET 读取)(使用 javascript 设置)
【发布时间】:2014-09-27 02:33:15
【问题描述】:

按照我之前在 stackoverflow 中的帮助进行讨论: Show a div in asp.net on condition

我有一个 ASP.NET 页面,其中包含一个 HTML 中的网络表单,具有 javascript 代码集 cookie。 (我知道 javascript 正在设置 cookie,因为我可以通过 ctrl+shift+I 的组合在 google chrome 中看到它们)。

我在这个解决方案背后的代码中写了为了显示/不显示基于 value 库克集的表单:

  protected void Page_Load(object sender, EventArgs e)
{

    HttpCookie myCookie = new HttpCookie("tempcookieforclose");
    myCookie = Request.Cookies["tempcookieforclose"];

    // Read the cookie information and display it.
    if (myCookie != null)
        webform.Visible = false;
    else
        webform.Visible = true;

那行不通。这个例子也不能显示是否在输出中设置了 cookie 名称:

   HttpCookie myCookie = new HttpCookie("MyTestCookie");
    myCookie = Request.Cookies["MyTestCookie"];

    // Read the cookie information and display it.
    if (myCookie != null)
    Response.Write("<p>"+ myCookie.Name + "<p>"+ myCookie.Value);
       else
     Response.Write("not found");

(我把 MyTestCookie 改成了“mycookie”)

我还发布了为我的网络表单设置 cookie 的功能:

        function tempcookie() {
        days = 1; // number of days to keep the cookie
        myDate = new Date();
        myDate.setTime(myDate.getTime() + (days * 24 * 60 * 60 * 1000));
        document.cookie = 'cookieName=cookieclose; expires=' + myDate.toGMTString();


        function permacookie() {
        days = 30; // number of days to keep the cookie
        myDate = new Date();
        myDate.setTime(myDate.getTime() + (days * 24 * 60 * 60 * 1000));
        document.cookie = 'cookieName=cookiesignup; expires=' + myDate.toGMTString();
         }

【问题讨论】:

  • 服务器端先于客户端运行。因此,您必须刷新页面才能让服务器端看到客户端设置的 cookie。
  • 是的,这就是服务器检查 cookie 是否设置并决定显示/不显示网络表单的原因。网络表单设置了 cookie。意味着我第一次进入该页面时,由于未设置 cookie,因此出现了网络表单。通过单击网络表单中的“关闭”,cookie 被设置,因此下次重新加载页面时,网络表单不应该显示,但显然不适用于我的代码:)
  • 我在帖子中写的是正确的。问题是我使用 cookie 的值而不是 cookie 的名称作为变量。 :)

标签: javascript c# asp.net cookies


【解决方案1】:

我对您的代码进行了一些修改。希望对你有帮助。

HttpCookie myCookie = new HttpCookie("tempcookieforclose");
myCookie.Values.Add("date", "1");
Response.Cookies.Add(myCookie);
// Read the cookie information and display it.
myCookie = Request.Cookies["tempcookieforclose"];
if (myCookie != null)
    Response.Write("In If");
else
    Response.Write("In Else");

【讨论】:

    猜你喜欢
    • 2012-11-20
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2017-09-05
    相关资源
    最近更新 更多