是否可以在 _layout.cshtml 上添加视图模型



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

我应该如何实现这一点?

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

有人可以帮忙吗?谢谢。

更新:----------我将主页/_Menu作为使用菜单视图模型的部分视图。但是,如何在_layout中包含该视图?

我不能简单地在_Layout.cshtml中使用@Html.Partial("_Menu"),因为我需要指定构建视图模型的控制器和操作。正确的方法是什么?

如果我这样做@Html.RenderAction("_Menu", "Home"),我会在模型上得到一个Object reference not set to an instance of an object.错误。

布局中不应有模型,因为默认情况下从那里调用的每个视图都将具有此模型。相反,您应该使用该模型创建一个菜单视图,并在调用它时将新的 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() 在每个级别的菜单上填充它们。

相关内容

  • 没有找到相关文章

最新更新