0

シナリオは、ナビゲーション バー (メニュー) に Mvc.Sitemap を設定することです。

どうすればこれを達成できますか?

ビューモデルをレイアウトページに追加するのは奇妙に感じます。そのため、ビューに複数のビュー モデルが含まれる場合があります。

誰でも助けることができますか?ありがとうございました。

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

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

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

4

1 に答える 1

1

レイアウトにモデルを配置しないでください。デフォルトでそこから呼び出すすべてのビューにこのモデルが含まれるためです。代わりに、モデルを使用して Menu ビューを作成し、それを呼び出すときに新しい 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() に移動して、それらを設定します。

于 2012-04-13T18:57:15.813 に答える