web-dev-qa-db-ja.com

Cookieに複数の値を保存する

たくさんのCookieを使用する非常に大きなWebサイトがあります。約あります。 14種類のCookieがあります。私はアイテムごとに異なるクッキーを持っています。ユーザーがサイトを閲覧すると、ブラウザに14個のCookieがあります。これいらない。

14個のアイテムを持つサイト用の単一のCookieが必要で、それらを追加、編集、削除できます。私は多くの方法を試しましたが、私はこれを行うことができません。

ユーザー名をCookieに保存するだけでなく、ランタイムCookieをいくつか配置する必要があります。ユーザーがログインした後、個人用サイトのアドレスを保存します。最終的には、ユーザー名と個人サイトのアドレスの両方が必要です。ユーザーの名前を保存する前と、ユーザーが自分の個人用サイトにアクセスしたときに、個人用サイト名のランタイムを保存します。

誰も私がこれを行う方法を知っていますか?

30
Jalpesh Vadgama

マシューは私にそれをbeatりましたが、はい、 ASP.NET Cookies Overview ...を参照してください.

複数のキー/値を持つ単一のCookieを読み書きするには、次のようになります。

HttpCookie cookie = new HttpCookie("mybigcookie");
cookie.Values.Add("name", name);
cookie.Values.Add("address", address);

//get the values out
string name = Request.Cookies["mybigcookie"]["name"];
string address = Request.Cookies["mybigcookie"]["address"];
49
Kurt Schindler

ASP.NET Cookies Overview には、単一のCookieに複数の名前と値のペア(サブキーと呼ばれる)を実装する方法を説明するセクションがあります。これがあなたの言っていることだと思います。

そのページのC#の例:

Response.Cookies["userInfo"]["userName"] = "patrick"; //userInfo is the cookie, userName is the subkey
Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString(); //now lastVisit is the subkey
Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);

HttpCookie aCookie = new HttpCookie("userInfo");
aCookie.Values["userName"] = "patrick";
aCookie.Values["lastVisit"] = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);

編集:Cookies Overviewから(強調を追加):

Cookieの変更と削除:Cookieを直接変更することはできません。代わりに、Cookieを変更するには、新しい値を使用して新しいCookieを作成し、そのCookieをブラウザに送信して、クライアント上の古いバージョンを上書きします。

15
Matthew Jones

Cookieの変更と削除:Cookieを直接変更することはできません。代わりに、Cookieを変更するには、新しい値を使用して新しいCookieを作成し、そのCookieをブラウザに送信して、クライアント上の古いバージョンを上書きします。

2
user2362017