从 js cookie 读取 .net 代码中的多值 cookie



我遇到了一段糟糕的时间来试图解决这个问题,搜索没有得出任何好的结果。

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

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

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

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

显示为无

和请求.Cookies("关系"(。值 = "tb1Relation%3Dsomething%26tb2Fname%3Dsomethingelse">

据我所知,因为 cookie 是 urlencode 的,但我无法弄清楚如何为该 Request.Cookie 对象取消编码它们。

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

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("=")

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

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

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

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

所以经过一番调查,我发现我必须添加:

$.cookie.raw = true;

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

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

最新更新