【问题标题】:Reading a multiple value cookie in .net code from js cookie从 js cookie 读取 .net 代码中的多值 cookie
【发布时间】:2013-10-11 00:11:56
【问题描述】:

我很难弄清楚这一点,但搜索并没有得到任何好的结果。

我用 Jquery 在我的页面中创建了一个 cookie,就像这样

var cookieData = {
                tb1Relation: $("#<%= tb1Relation.ClientID %>").val(),
                tb2Fname: $("#<%= tb2Fname.ClientID %>").val()
            }
            $.cookie("Relation", $.param(cookieData));

但是当我进入代码隐藏时,我可以看到那个 cookie,但值没有分开,因为它是编码的,所以它把它当作一个值而不是多个值。所以:

Request.Cookies("Relation")("tb1Relation")

显示为空

和 Request.Cookies("Relation").Value = "tb1Relation%3Dsomething%26tb2Fname%3Dsomethingelse"

据我所知,因为 cookie 是 urlencoded,但我不知道如何为 Request.Cookies 对象取消编码。

我的最后一个案例场景如下,但它很糟糕,我真的想避免这种情况。

Request.Cookies("Relation").Value = HttpUtility.UrlDecode(Request.Cookies("Relation").Value)

    Dim cookiesSplit() As String = Request.Cookies("formData2").Value.Split("&")

    'Splits the first array entry into id/val - Really lame though
    Dim cookieIdVal() As String = cookiesSplit(0).Split("=")

我完全缺少任何更好的解决方案?

编辑:修复了一些代码,因为我看起来好像指向了错误的东西。现在应该更有意义了

【问题讨论】:

    标签: javascript jquery asp.net vb.net cookies


    【解决方案1】:

    也许这会有所帮助...我必须在代码隐藏中将 cookie 读回文本框,但 cookie 文本看起来类似于您的“test1%3Dsomething%26test2%3Dsomethingelse”,所以我必须进行 UrlDecode

    private void CheckForCookieText()
    {
        string ConclusionText = SystemCookies.getSingleCookie("txtRecommended", "");
        txtRecommended.Text = (ConclusionText.Trim().Length > 0) ? HttpUtility.UrlDecode(ConclusionText) : "";
    }
    

    【讨论】:

      【解决方案2】:

      所以经过大量调查,我发现我必须添加:

      $.cookie.raw = true;
      

      就在创建 cookie 之前,现在我可以在代码中以正常方式访问 cookie

      Request.Cookies("CookieName")("cookieKey")

      【讨论】:

        猜你喜欢
        • 2013-12-07
        • 2012-11-06
        • 2021-04-17
        • 2015-07-13
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        • 2017-02-25
        • 1970-01-01
        相关资源
        最近更新 更多