マスター ページがコンテンツ ページとマージされるときにイベントが発生する順序を次に示します。
http://msdn.microsoft.com/en-us/library/dct97kc3.aspx
だから、私の問題は次のとおりです。
1 つのログイン ページ (マスター ページを使用しない)、1 つのマスター ページ、および数百のコンテンツ ページがあります。
マスター ページでログイン セッションを確認しますSession["loggedInUser"]
(ログインしていない場合は、ログイン ページにリダイレクトします)
ログインしていないときに、あるコンテンツ ページのアドレスを入力すると、マスター ページでログイン セッションをチェックし、ログイン ページにリダイレクトする必要がありますよね? ただし、ここには 2 つのケースがあります。
コンテンツページでは、何も使わなければSession["loggedInUser"]
ログインページにリダイレクトされるので、ここでOK!
Session["loggedInUser"]
2 番目のケース:たとえば、コンテンツ ページにユーザー名を表示するために使用する場合:
UserInfo loggedInUser = (UserInfo)Session["loggedInUser"];
コンテンツ内ページはマスターページの前に起動されるため、page_load
page_load
ここでは null オブジェクトを返します。したがって、ログインページにリダイレクトする代わりに null オブジェクトを表示します。
Page_PreInit
マスターページでも試しましたが、助けにはなりませんでした
protected void Page_PreInit(object sender, EventArgs e)
{
if (Session["loggedInUser"] == null)
{
Response.Redirect("~/Login.aspx");
}
}
なにか提案を?