Web Tips19ではあえてはずしたContext.Itemsですが、Essential ASP.NETに記述がありました。
HTTP PipeLine(サーバへのリクエストからレスポンスが返るまで)の中でデータを保持する入れ物として使ってよいようです。
独自のモジュールを作成した際、モジュールとaspxページ間でデータを渡す際の便利な入れ物として使えますが、ここではServer.Transferを利用してページを遷移する中でのデータの受け渡しに使う方法をサンプルにまとめます。
Page1.aspx
-------------------------------------------------------
<%@ Page Language="C#" %>
<html>
<head>
<script runat="server">
void button_Click(Object sender, EventArgs e)
{
Context.Items["InputData"] = 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>
-------------------------------------------------------
Page2.aspx
-------------------------------------------------------
<%@ Page Language="C#" %>
<html>
<head>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
label1.Text = "渡された文字列:" + Context.Items["InputData"];
}
</script>
</head>
<body>
このページはPage2です<br />
<asp:label id="label1" runat="server" />
</body>
</html>
-------------------------------------------------------
だいぶすっきりしたプログラムになります。
2つのページ間だけで利用するデータだったらこの方法を使うのが一番簡単かもしれません。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)