クライアントのページ側でJavaScriptを利用してCookieの読み込みや書き込みをする場合は以下の記事を参照して下さい。
Response.Cookies["kind"] = "Candy";
string value = Response.Cookies["kind"];
protected void Page_Load(object sender, EventArgs e)
{
//Cookieへの値の書き込み
Response.Cookies["MyValue"].Value = "Penguin";
Response.Cookies["MyValue"].Expires = DateTime.Now.AddDays(1.0);
Response.Cookies["AccessDateTime"].Value = DateTime.Now.ToString();
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CookieWrite.aspx.cs" Inherits="AspNetCookie.CookieWrite" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>サーバーによって"name=しろくま" "value=350"をCookieに書きこみました。</div>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AspNetCookie
{
public partial class CookieWrite : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Cookies["name"].Value = HttpUtility.UrlEncode("ABCしろくま");
Response.Cookies["name"].Expires = DateTime.Now.AddMinutes(60);
Response.Cookies["value"].Value = "350";
Response.Cookies["value"].Expires = DateTime.Now.AddMinutes(60);
}
}
}
Response.Cookies["(キー名)"].Value
に代入することでCookieに値を設定します。また、
Response.Cookies["name"].Expires
に値を設定することでCookieの有効期限を設定します。上記のコードではCookieの有効期限を値設定時から60分にしています。<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CookieView.aspx.cs" Inherits="AspNetCookie.ViewCookie" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>name:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
<div>value:<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label></div>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AspNetCookie
{
public partial class ViewCookie : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string namestr = "";
string valuestr = "";
if (Request.Cookies["name"] != null) {
namestr = HttpUtility.UrlDecode(Request.Cookies["name"].Value);
}
if (Request.Cookies["value"] != null) {
valuestr = Request.Cookies["value"].Value;
}
Label1.Text = namestr;
Label2.Text = valuestr;
}
}
}
Request.Cookies["(キー名)"].Value
にて、Cookieに設定された値を取り出します。Cookieが設定されていない場合は Request.Cookies["(キー名)"] がnullになるため、値を取り出す前にキーが存在しているかを下記のコードで確認をします。
if (Request.Cookies["name"] != null) {
...(Cookie値へのアクセス)
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CookieClear.aspx.cs" Inherits="AspNetCookie.CookieClear" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
Cookieをクリアしました。
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AspNetCookie
{
public partial class CookieClear : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies["name"] != null) {
HttpCookie myCookie = new HttpCookie("name");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
if (Request.Cookies["value"] != null) {
HttpCookie myCookie = new HttpCookie("value");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
}
}
}
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="default.aspx.cs" Inherits="SimpleCookie._default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="result.aspx.cs" Inherits="SimpleCookie.result" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace SimpleCookie
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string dataStr= HttpUtility.UrlEncode(TextBox1.Text);
Response.Cookies["data"]["value"] = dataStr;
Response.Cookies["data"].Expires = DateTime.Now.AddMinutes(3);
/*
//こちらのコードでも可
string dataStr= HttpUtility.UrlEncode(TextBox1.Text);
HttpCookie hc = new HttpCookie("data");
hc["value"] = dataStr;
hc.Expires = DateTime.Now.AddMinutes(3);
Response.Cookies.Add(hc);
*/
Response.Redirect("result.aspx");
}
}
}
string dataStr= HttpUtility.UrlEncode(TextBox1.Text);
テキストボックスに入力された文字列をURLエンコードします。Cookieに文字列を設定した時にShift-JISにエンコードされてしまうのを防ぐためです。 Response.Cookies["data"]["value"] = dataStr;
Response.Cookies["data"].Expires = DateTime.Now.AddMinutes(3);
URLエンコードした文字列をCookieの"data"キーの"value"サブキーに設定します。また、"data"キーのCookieの有効期限を3分後に設定します。 Response.Redirect("result.aspx");
result.aspxページに遷移します。using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace SimpleCookie
{
public partial class result : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
/*
//こちらのコードでも可
if (Request.Cookies["data"] != null) {
Label1.Text = Request.Cookies["data"]["value"];
}*/
if (Request.Cookies["data"] != null) {
HttpCookie hc = Request.Cookies["data"];
string dataStr = hc["value"];
Label1.Text = HttpUtility.UrlDecode(dataStr);
}
}
}
}
if (Request.Cookies["data"] != null) {
HttpCookie hc = Request.Cookies["data"];
string dataStr = hc["value"];
Label1.Text = HttpUtility.UrlDecode(dataStr);
}
Cookieのキーに割り当てられているオブジェクトがない場合、値はnullになるため、Cookies["data"]のnullチェックを事前にします。nullでなければ値が格納されている可能性があるため、HttpCookieの"value"サブキーの値を読み出します。