public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//永続データ以外の削除
session_mgr.clean(Page);
}
protected void Button1_Click(object sender, EventArgs e)
{
//永続データの設定
session_mgr.setData(Page, "test", TextBox1.Text);
Response.Redirect("WebForm1.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
//永続データの取出し
string str = (string)session_mgr.getData(Page, "test");
if (str != null)
{
TextBox2.Text = (string)str;
}
}
}
class session_mgr
{
private object val;
private static string unique = "_session_mgr";
private session_mgr(object _val)
{
val = _val;
}
//永続データの設定
public static void setData(System.Web.UI.Page page, string key, object data)
{
page.Session[key + unique] = new session_mgr(data);
}
//永続データの取出し
public static object getData(System.Web.UI.Page page, string key)
{
object pos = page.Session[key + unique];
if (pos is session_mgr)
{
return ((session_mgr)pos).val;
}
return null;
}
//永続データ以外の削除(ポストバック時は削除しない)
public static void clean(System.Web.UI.Page page)
{
//ポストバック以外の場合は、永続データ以外を削除する
if (!page.IsPostBack)
{
for (int i = page.Session.Count - 1; i >= 0; i--)
{
string key = page.Session.Keys[i];
if (!(page.Session[key] is session_mgr))
{
page.Session.Remove(key);
}
}
}
}
}