2

複数のヘルプテキストの非表示状態を保存するために、1つの大きなCookieのサブキーを使用しています。ただし、1つのサブキーが更新されると、他のすべてのサブキーが削除されます。これを解決するには、特定のCookieのすべてのサブキーを常に同時に更新する必要がありますか?

これが問題のある私の現在の関数です。

' Store cookie_value of cookie_name  .
sub store_string( cookie_value , cookie_name  )
    ' Sets cookie cookie_name to cookie_value.
        response.Cookies( "UserSettings" )( cookie_name ) = cookie_value 
        response.Cookies( "UserSettings").Expires = datetime.now.adddays(365*10)  ' 10 years.  The hardware won't last that long!
end sub



' Retrieve stored cookie_name.
function restore_string( byval cookie_name  ) 
    ' Returns cookie named cookie_name.
        If  Request.Cookies( "UserSettings") Is Nothing Then
            return ""
        else
            cookie_value =  Server.HtmlEncode(Request.Cookies( "UserSettings" )( cookie_name ))
            return   cookie_value
        end if
end function
4

2 に答える 2

1

私は同じ問題を抱えています、そしてこれはここのasp.netフォーラムで答えられたようです:http: //forums.asp.net/t/1819596.aspx/1

コードの抜粋は次のとおりです。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Me.Label1.Text = DateTime.Now.ToString()
    'add cookie
    If Not Me.IsPostBack Then
        Dim aCookie As New HttpCookie("userInfo")
        aCookie.Values("userName") = "UserName"
        aCookie.Values("lastVisit") = DateTime.Now.ToString()
        aCookie.Expires = DateTime.Now.AddDays(1)
        Response.Cookies.Add(aCookie)
    End If
End Sub


Protected Sub Button1_Click(sender As Object, e As EventArgs)
    ' update subkey : "lastVisit"
    Dim cookie As HttpCookie = Request.Cookies("userInfo")
    cookie("lastVisit") = DateTime.Now.ToString()
    cookie.Expires = DateTime.Now.AddDays(1)
    Response.Cookies.Add(cookie)

End Sub

Protected Sub Button2_Click(sender As Object, e As EventArgs)
    ' show all subkey values
    Response.Write(Request.Cookies("userInfo")("userName"))
    Response.Write(Request.Cookies("userInfo")("lastVisit"))
End Sub
于 2012-11-26T23:23:51.700 に答える
0

私はこれを理解しようと数日を費やし、最終的にこの解決策に到達しました:

サブキーの1つだけを編集している場合は、次のコードを使用する必要があります。

Dim cookieCode As HttpCookie = _contxt.Request.Cookies(COOKIE_NAME)
cookieCode.Values.Set(KEY, ivalue) 
Response.Cookies.Add(cookieCode)

SETコマンドは、サブキーのみを更新します。フルレスポンス方式を使用すると、他のサブキーが上書きされます。

于 2014-08-27T19:24:08.670 に答える