2012-06-06 86 views
0

NET專家,ASP.NET/C#我應該在哪裏使用屬性聲明會話?

我得到了一個ASP.NET MVP(模型視圖演示)應用程序,在那裏我使用GenMaster.Master(母版頁),Metadata.aspx(起始頁)的Global.asax等

我在GenMaster.Master(Master Page)和Metadata.aspx(Start Page)中訪問Session["EncryptedQuery"]

我們的會議聲明中約定如下使用屬性:

public string EncryptedQuery 
{ 
    get 
    { 
     object SessionObject = Session["EncryptedQuery"]; 
     return (SessionObject == null) ? String.Empty : (string)SessionObject; 
    } 
    set 
    { 
     Session["EncryptedQuery"] = value; 
    } 
} 

現在,在這裏我要聲明這個會話屬性來訪問它的主,以及所有的內容頁?我不想直接分配/從Session["EncryptedQuery"]轉回。

謝謝

回答

0

母版頁實現爲頁面的子控件。您應該能夠使用MasterPage中的Page.Session訪問它。

我只注意到你可能一直在問是在哪裏分配的財產,而不是在哪裏聲明它。所以,如果你問什麼是最好的練習,在什麼地方初始化會話數據,那麼答案將是HttpApplication類的PostAcquireRequestState event。你可以在你的Global.asax中聲明它,或者用一個自定義的HTTP模塊來連接它。

0

這種策略運行良好,並允許以強類型的方式從網站中的任何位置訪問會話數據。

public static class SessionData 
{ 
    private const string ENCRPYTED_QUERY = "ENCRPYTED_QUERY"; 
    public static string EncrpytedQuery 
    { 
     get 
     { 
      if (HttpContext.Current.Session != null) 
       return HttpContext.Current.Session[ENCRPYTED_QUERY] as string; 

      return null; 
     } 
     set 
     { 
      HttpContext.Current.Session[ENCRPYTED_QUERY] = value; 
     } 
    } 

    //add more down here... 
} 
相關問題