2017-01-25 64 views
0

私たちはASP.NET Coreアプリケーションにいくつかの役割を持っています。各役割に独自のレイアウトが必要です。これを行うために、各役割ごとに別々のレイアウトを考えています。ASP.NET MVCコアの複数のレイアウト

~/Views/Shared/Layouts/_DefaultLayout.cshtml 
~/Views/Shared/Layouts/_Role_1_Layout.cshtml 
~/Views/Shared/Layouts/_Role_2_Layout.cshtml 
~/Views/Shared/Layouts/_Role_3_Layout.cshtml 
~/Views/Shared/Layouts/_Role_4_Layout.cshtml 

これらの役割を切り替えるために我々はこれまで~/Views/_ViewStart.cshtmlを変更します。これは最初の場所で働く

@{ 
    if (this.User.IsInRole("Role1")) 
    { 
     Layout = "~/Views/Shared/Layouts/_Role_1_Layout.cshtml"; 
    } 
    else if (this.User.IsInRole("Role2")) 
    { 
     Layout = "~/Views/Shared/Layouts/_Role_2_Layout.cshtml"; 
    } 

    // .... 

    else 
    { 
     Layout = "~/Views/Shared/_DefaultLayout.cshtml"; 
    } 
} 

が、私が代わりに現在のレイアウトを切り替えると、たとえばRole1用を持つ別のユーザーでログインしたときに_Role_1_Layout.cshtmlを使用するには、空白のページです。

+0

切り替えても適切なレイアウトになっていますか?たとえば、Layout = ...のそれぞれにブレークポイントを設定し、役割を切り替える場合は、少なくとも期待している適切なレイアウトにヒットしますか?これが機能すれば、少なくともこれを排除することができます。そうでない場合、これは問題を解決するために異なる角度を見つけ出すのに役立ちます。ああ、切り替えて...あなたはログイン/ログオフと再ログインを意味するのですか?または、他の何か? – Vlince

答えて

0

「else」のように見えますが、パスに間違いがありますか?

レイアウト= "〜/ Views/Shared/_DefaultLayout.cshtml";

おそらく、次のようになります。

レイアウト= "〜/ビュー/共有/ レイアウト/ _DefaultLayout.cshtml"。

これはあなたの問題の原因ではありません。あなたのコードとリポジトリを共有できますか?

関連する問題