1

ユーザーがログインしたときに表示されるメニューを作成しようとしています。コードは次のようになります。

<html>
<body>
     @if(Model.IsUserLogged){
     //some html
     }

     @RenderBody()

     @if(Model.IsUserLogged){
     //some html again
     }
</body>
</html>

しかし、レイアウトページではモデルを使用できないので、これを行うための最良の方法は何ですか?

4

2 に答える 2

1

それが認証または認証情報である場合は、リクエストまたはCookieから読み取ってみませんか。上記の例:

@Request.IsAuthenticated  

その他の少量のユーザーデータはCookieに保存され、ヘルパーを使用して読み取ることができます。または、オーディエンスブラウザでサポートできる場合は、ローカルストレージにはるかに多くのユーザーデータを保存できます。

于 2012-09-24T16:45:16.287 に答える
1

これを行うには、部分ビューを使用する方法がありますが、ロジックをそこに移動してレイアウトから外す必要があります。部分ビュー(「_MyMenu」など)を作成し、そこにレンダリングロジックを配置して、そのコントローラーメソッドを作成します。

public PartialViewResult MenuView() {
    SomeObject model = GetSomeObject()
    return PartialView("_MyMenu", model);
}

次に、レイアウトページで、次のように呼び出しますRenderAction

@{Html.RenderAction("MenuView", "MyController");}

ユーザーの認証状態を取得する方法についてはすでに誰かが言及しているので、それで十分かどうかはわかりません。

于 2012-09-24T17:04:49.710 に答える