0

モデルを使用してメニューをレンダリングする MVC プロジェクトがあります。

Session_StartGlobal.asax.csのイベントでメニュー コンテンツを宣言し、ブレーク ポイントを使用して正しく入力されていることを確認しました。

私は単に@Html.Partial("_Menu")自分の中で使うことはできません_Layout.cshtml

もしそうなら@Html.Partial("_Menu", Model.Something)、私は

オブジェクト参照がオブジェクト インスタンスに設定されていません

モデルのエラー。

4

3 に答える 3

2

まず、セッション オブジェクトを使用しないことをお勧めしますが、それを使用しているため、すべてのコントローラーが継承する共通コントローラーの Initialize メソッド (オーバーライド) で、セッションからメニュー データを取得し、それをビューバッグ。次に、_Layout でビューバッグからオブジェクトを取得できます (

var navigationItems = ViewBag.NavigationItems as NavigationViewModel;

)フィールドとして、そのオブジェクトまたはそのプロパティをレンダリング用のパーシャルに渡すことで、そのオブジェクトをどこでも使用できます(

@Html.Partial("_Navigation", navigationItems) 

)。

それが役立つことを願っています。

于 2012-10-12T21:21:36.417 に答える
1

これには Razor - Sectionを使用できます。

_Layout.cshtml 内:

<div id=”menu”&gt; 
@RenderSection("Menu", required:false)
</div>

& 必要なページ (例: Index.cshtml) でメニュー:

@section Menu 
{
 @Html.Partial("_Menu", Model.Something)
}
于 2012-10-04T07:44:51.350 に答える
0

詳細を提供します。

  • なぜ使用しているのSession_Startですか?
  • モデルをどのように埋めますModel.Somethingか?

動的メニューを作成する最も簡単な方法はです@Html.RenderAction

于 2012-10-04T07:41:08.433 に答える