asp.net Cookieの利用方法

asp.netを利用し、同じブラウザからアクセスがあった場合に、コンボボックスの選択が以前選択されたものとおなじものにしたいので、Cookieを利用してみました。

Cookieを記述する方法
https://msdn.microsoft.com/ja-jp/library/78c837bd(v=vs.100).aspx

Cookieを読み取る方法
https://msdn.microsoft.com/ja-jp/library/bd70eh18(v=vs.100).aspx

注意点として、上記Cookieを記述する方法でうまく書き込めたのですが
Response.Cookies[“UserSettings”][“Font”] = “Arial”;
Response.Cookies[“UserSettings”][“Color”] = “Blue”;
Response.Cookies[“UserSettings”].Expires = DateTime.Now.AddDays(1d);

同じCookieに違うサブキーで記述したい場合、メソッドが違うとCookieが上書きされてしまい、違うサブキーでもそれが消失してしまう現象がありました。そこで、違うメソッド内でCookieを利用した今回の場合では、それぞれCookieを別にしました。

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.Cookies[“userSettings1”] != null)
{
string userHomen;
if (Request.Cookies[“userSettings1”][“Homen”] != null)
{
userHomen = Request.Cookies[“userSettings1”][“Homen”];
CookieHomen.Text = userHomen;
ddl1.SelectedValue = userHomen;

HomenSelected();
}

}

if (Request.Cookies[“userSettings2”] != null)
{

string userKyoten;
if (Request.Cookies[“userSettings2”][“Kyoten”] != null)
{
userKyoten = Request.Cookies[“userSettings2”][“Kyoten”];
CookieKyoten.Text = userKyoten;
ddl2.SelectedValue = userKyoten;
}
}
}

protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
HomenSelected();

//クッキーに方面コードを保存しておく
Response.Cookies[“userSettings1”][“Homen”] = ddl1.SelectedValue.ToString();
Response.Cookies[“userSettings1”].Expires = DateTime.Now.AddMonths(12);
}

private void HomenSelected()
{
//方面が選択された時の動作を記載し、Cookieで設定された場合とddl1が選択されてイベントが発生した場合に同じ動作をするようにした。
}

protected void ddl2_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Cookies[“userSettings2”][“Kyoten”] = ddl2.SelectedValue.ToString();
Response.Cookies[“UserSettings2”].Expires = DateTime.Now.AddMonths(12);
}

ここのサイトが良くまとまっていて、考え方を整理するのに役立ちました。
http://www6.atpages.jp/ridumi/Asp_net/BasicTecHnological/ValueSave.html
Webアプリケーションでは、ブラウザインスタンスごとに値を保持するには次のような方法があります。
Cookieの利用
ViewStateの利用
Sessionの利用