0

场景是我想用 Mvc.Sitemap 填充导航栏、菜单。

我应该如何实现这一目标?

在布局页面上添加 View Model 感觉很奇怪。这可能会导致一个视图拥有多个视图模型。

有人可以帮忙吗?谢谢你。

更新: ---------- 我有 Home/_Menu 作为使用 MenuViewModel 的部分视图。但是如何在 _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 回答