1

部分的にしたいナビゲーションバーがあります。ユーザーがログインしている場合や、特定のページにいる場合に追加のリンクが表示される場合など、ナビゲーション バーの内容はわずかに異なります。

パーシャルにデータを提供するにはどうすればよいですか? すべてのコントローラーの ViewData でこれを渡す必要がありますか?

いくつかの異なる手法を使用する必要がある可能性が高いため、オプションのリストが最も役立ちます。

4

2 に答える 2

1

以前、管理者にメニューを表示し、スーパー管理者にメニューを表示し、他のメニューにメニューを表示する必要があるときに、同じ問題が発生しました...その場合に私がしたこと。部分ビューを返すアクションを作成し、マスター ページにレンダリングしました。ビューは強く型付けされました。(ユーザーの役割を表すプロパティを持つクラス。) その強く型付けされたクラスを使用して、かみそりビューで if および else if ロジックを作成し、問題を解決しました....これが役に立てば幸いです。

于 2013-09-26T19:57:04.203 に答える
1

そのためのモデルを作成します。NavModelコンストラクターでそれが表すすべてのデータ (わかりやすいユーザー名、現在のページなど) を収集し、それらをパブリック プロパティとして公開するクラスを作成します。次に、通常どおりモデルをビューにバインドします。ああ、ビューで直接 nav モデルをインスタンス化するのは避けてください。代わりに、インスタンス化しNavModelて nav 部分ビューを返すコントローラー アクション (Nav と呼ばれます) を作成してください。ChildActionOnlyAttributeクライアントが要求できないように、そのアクションをマークします。次に@Html.RenderAction、nav パーシャル (通常はレイアウト ビュー) をレンダリングする必要があるビューで使用します。

于 2013-09-26T19:49:41.030 に答える