ページを遷移する際に最初のページで入力したデータを次のページで利用したいという場合があります。
このとき一番便利なのはPageのSessionプロパティを利用する方法です。
Response.Redirectでページを遷移する場合にSessionプロパティを利用するには、例えば次のようにします。
Page1.aspx
-------------------------------------------------------
<%@ Page Language="C#" %>
<html>
<head>
<script runat="server">
void button_Click(Object sender, EventArgs e)
{
Session["inputtext"] = textbox1.Text;
Response.Redirect("page2.aspx");
}
</script>
</head>
<body>
<form id="myForm" runat="server">
このページはPage1です<br />
<asp:textbox id="textbox1" runat="server" /><br />
<asp:button Text="Page2へ" OnClick="button_Click" runat="server" />
</form>
</body>
</html>
-------------------------------------------------------
Page2.aspx
-------------------------------------------------------
<%@ Page Language="C#" %>
<html>
<head>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
label1.Text = "渡された文字列:" + Session["inputtext"].ToString() ;
}
</script>
</head>
<body>
このページはPage2です<br />
<asp:label id="label1" runat="server" />
</body>
</html>
-------------------------------------------------------
Server.Transferを利用する場合にもまったく同じようにSessionプロパティを利用することができます。
-------------------------------------------------------
<%@ Page Language="C#" %>
<html>
<head>
<script runat="server">
void button_Click(Object sender, EventArgs e)
{
Session["inputtext"] = textbox1.Text;
Server.Transfer("page2.aspx");
}
</script>
</head>
<body>
<form id="myForm" runat="server">
このページはPage1です<br />
<asp:textbox id="textbox1" runat="server" /><br />
<asp:button Text="Page2へ" OnClick="button_Click" runat="server" />
</form>
</body>
</html>
-------------------------------------------------------
Sessionプロパティにはどのようなデータでも格納できますが、そのかわり格納したデータの型がObject型になってしまいます。
取り出すときに元の型にもどすためのキャストなどが必要になることに注意しましょう。
Sessionを利用すると、ユーザ別のデータを手軽に管理することができますが、いろいろと気をつけないといけないことがあります。
・Sessionはアプリケーション単位で利用される。
IISの管理ツールから正しくアプリケーションの設定をしていないと、うまくデータが引き継がれない。
・Sessionはサーバ上のメモリを利用する。
大量のデータをSessionに格納したり、多数のユーザがアクセスする場合にはサーバのメモリが圧迫されてしまう。
・SessionはCookieを利用している。
クライアント側がCookieを利用できないようになっていると、デフォルトの設定ではSessionを利用することができない。
(設定の変更についてはそのうち別にまとめるつもりです。)
こういった点を考慮したうえでSessionプロパティを利用するかどうか決定しましょう。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)