2012-04-13 8 views
0

シナリオは、メニューのナビゲーションバーにMvc.Sitemapを設定することです。_layout.cshtmlにビューモデルを追加することはできますか?

どうすればよいですか?

ビューモデルをレイアウトページに追加するのは奇妙です。そのため、ビューに複数のビューモデルが存在する可能性があります。

どれでもお手伝いできますか?ありがとうございました。

更新:---------- MenuViewModelを使用する部分ビューとしてHome/_Menuがあります。しかし、どのように_layoutにそのビューを含めることができますか?

の中に単に@Html.Partial("_Menu")を使用することはできません。ビューモデルが構築されるコントローラとアクションを指定する必要があるからです。これを行う正しい方法は何ですか?

@Html.RenderAction("_Menu", "Home")を実行すると、モデルでObject reference not set to an instance of an object.エラーが発生します。

答えて

1

デフォルトでそこから呼び出すすべてのビューにこのモデルが存在するため、レイアウトにモデルを配置しないでください。代わりに、モデルを持つメニュービューを作成し、それを呼び出すときに新しいMenuModelをモデルとして渡す必要があります。

編集: メニュー値を保存する場所からデータを取り出すクラスを作成できます。そして、あなたはこのようなあなたの部分を呼び出す:

@Html.Partial("_Menu_", menuobject.Root) 

とクラス:

partial class menuobject 
{ 
    public static menuobject Root 
    { 
     // MenuRoots are all roots that have ID -1 - which will be the root 
     return MenuRoots.Single(x => x.Something == "Topnavi"); // this will return the root above all your menus 
    } 
} 

をあなたのビューよりも、あなたがそれらを移入するメニューの各レベルで()foreachのを行きます。

+0

私はこれをやろうとしています。更新された質問をご覧ください。ありがとうございました。 – Blaise

+0

質問が更新されました。私はそれが助けて欲しい –

関連する問題