Webアプリをフレームセットレイアウトからマスターページレイアウトに変換しています。フレームセット内の各ページは、共通のカスタムクラスを使用して、ログインしているユーザーを取得します。このカスタムクラスは、Pageから継承します。
私はこれを変換するための適切な方法はインターフェースだと思いましたが、私は本当に間違っていました。マスターページの各コンテンツページがログインしたユーザークラスを参照できるように、グローバル変数またはクラスを格納するための最良かつ最も効率的な手段は何ですか?
Webアプリをフレームセットレイアウトからマスターページレイアウトに変換しています。フレームセット内の各ページは、共通のカスタムクラスを使用して、ログインしているユーザーを取得します。このカスタムクラスは、Pageから継承します。
私はこれを変換するための適切な方法はインターフェースだと思いましたが、私は本当に間違っていました。マスターページの各コンテンツページがログインしたユーザークラスを参照できるように、グローバル変数またはクラスを格納するための最良かつ最も効率的な手段は何ですか?
ログに記録されたユーザークラスを返す静的メソッドを使用した単純な静的クラスにします。このコードをASP.NETページに関連付ける必要はありません。ログオンしたユーザーを取得するのに時間がかかる場合(たとえば、DBクエリなど)、ログに記録されたユーザークラスインスタンスをセッションに保存します。このようなもの :
public static class Users
{
public static User GetLoggedUser()
{
if (HttpContext.Current.Session["LoggedUser"] != null)
{
return (User)HttpContext.Current.Session["LoggedUser"];
}
else
{
User usr = GetLoggedUserSomehow(); // here goes your current code to get user
HttpContext.Current.Session["LoggedUser"] = usr;
return usr;
}
}
}