2011-12-25 14 views
1

私のWebプロジェクト(ASP.NET)では、2つの異なるマスターページが必要です。 1つは "管理者"のようなユーザー用で、もう1人は通常のユーザー用です。読み込むマスターページはどこで指定できますか?ユーザーに応じて正しいマスターページをロードするにはどうすればよいですか?異なるユーザーの異なるマスターページを読み込む

+0

どのように違うのですか? – SLaks

+0

彼らは異なっています。しかし、私は希望のファイルを指定する場所を知りません "。マスター"。それは主な問題です。 – Leo

+0

条件付きでマスターを1つに結合できますか? – SLaks

答えて

4

adminユーザーがログインしようとすると、ユーザー名とパスワードをデータベースで確認し、ログイン資格が有効な場合は、これが管理セッションであることを示すセッション変数を設定します。次に、セッション値をチェックして現在のユーザーが管理者か通常ユーザーかを示すfalseを返すメソッドを持つことができます。

管理ログインが成功している場合は、その後、現在のユーザーが
public bool IsAdmin() 
    { 
    if(Session["adminUserName"]!=null) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
    } 

が共通の場所で、この方法をお持ちの管理者であるかどうかをチェックするための方法を記述し、このセッション変数
Session["adminUserName"]=txtUserName.Text; 

を設定

(基本クラスなどのように)、ページのライフサイクル中にチェックし、適切なマスターページをロードします。

void BasePage_PreInit(object sender, EventArgs e) 
    { 
     if(IsAdmin()) 
     { 
      MasterPageFile = "~/MasterAdmin.master"; 
     } 
     else 
     { 
      MasterPageFile = "~/MasterNormal.master"; 
     } 
    } 

ASP.NET MVCアプリケーションの場合は、ActionMethodでこれを確認できます。

public ActionResult Index() 
{ 
if(IsAdmin()) 
{ 
    return View("Index", "MasterAdmin"); 
} 
else 
{ 
    return View("Index", "MasterNormal"); 
} 
} 
0

Page_PreInitイベントをコードビハインドで処理し、MasterPageFileプロパティを好きなように設定します。

+0

私は持っている可能性があります。しかし、私は、ユーザーの役割、データベースのデータをチェックするたびに、または "セッション"でチェックする必要があります。それは減速しない? – Leo

+0

あなたが何を求めているのか分かりません。 – SLaks

関連する問題