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

时间:2013-10-09 21:07:46

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

我正在努力解决这个问题,并且搜索没有取得任何好结果。

我在我的页面中使用Jquery创建了一个cookie,如此

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

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

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

显示为Nothing

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

经过多次调查后,我发现我必须添加:

$.cookie.raw = true;

在创建cookie之前,现在我能够以正常的方式访问cookie

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