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); } } } } }