0

NETエキスパート、

ASP.NET MVP(Model View Presenter)アプリケーションを入手しました。ここでは、GenMaster.Master(マスターページ)、Metadata.aspx(スタートページ)、Global.asaxなどを使用しています。

Session["EncryptedQuery"]GenMaster.Master(マスターページ)とMetadata.aspx(スタートページ)の両方でにアクセスしています。

セッション宣言の規則では、プロパティを次のように使用します。

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

さて、マスターとすべてのコンテンツページでアクセスするには、このSessionプロパティをどこで宣言する必要がありますか?そして、私は直接割り当て/取得したくありません Session["EncryptedQuery"]

ありがとう

4

2 に答える 2

0

MasterPageは、ページの子コントロールとして実装されます。Page.SessionMasterPageからを使用してアクセスできるはずです。

プロパティを宣言する場所ではなく、プロパティを割り当てる場所を尋ねられている可能性があることに気づきました。したがって、セッションデータを初期化する場所に関するベストプラクティスを尋ねる場合、答えはクラスのイベントになります。これは、Global.asaxで宣言するか、カスタムHTTPモジュールに接続することができます。PostAcquireRequestStateHttpApplication

于 2012-06-06T06:33:03.400 に答える
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...
}
于 2012-06-06T06:50:33.140 に答える