问题 如何在Razor MVC中为共享布局提供模型?


我正在尝试为共享布局提供模型,以便从数据库动态创建菜单链接。我应该从哪里开始?

我正在寻找如何使用继承来做这个的教程?


5701
2017-12-13 10:50


起源



答案:


你可以这样做:

模型

public partial class Menu
{
    public String[] items;

    public Menu(String[] items)
    {
        this.items = items;
    }
}

查看(_Menu)

@model YourMVC.Models.Menu

<ul>
    @foreach (String item in Model.items)
    {
        <li>@item</li>
    }
</ul>

把它放在_Layout中

@Html.Action("_Menu", "Home")

控制器(HomeController)

public ActionResult _Menu()
{
    String[] items = {"Item1", "Item2", "Item3", "Item4"};

    return PartialView(new Menu(items));
}

当然,在实际实现中,您可以从控制器中的数据库中获取所需的任何内容 _Menu() 行动。

我不确定这种实现是否是最佳实践,但它确实有效。


11
2017-12-17 15:35



我可以问一下,你为什么要使用偏头课? - Givi
这里没有必要,但我经常处理由ORM(LINQ to SQL)生成模型的项目。 partial 具有附加模型代码的类在另一个文件中手动添加,ORM不会覆盖该文件。 - Drew Gaynor


答案:


你可以这样做:

模型

public partial class Menu
{
    public String[] items;

    public Menu(String[] items)
    {
        this.items = items;
    }
}

查看(_Menu)

@model YourMVC.Models.Menu

<ul>
    @foreach (String item in Model.items)
    {
        <li>@item</li>
    }
</ul>

把它放在_Layout中

@Html.Action("_Menu", "Home")

控制器(HomeController)

public ActionResult _Menu()
{
    String[] items = {"Item1", "Item2", "Item3", "Item4"};

    return PartialView(new Menu(items));
}

当然,在实际实现中,您可以从控制器中的数据库中获取所需的任何内容 _Menu() 行动。

我不确定这种实现是否是最佳实践,但它确实有效。


11
2017-12-17 15:35



我可以问一下,你为什么要使用偏头课? - Givi
这里没有必要,但我经常处理由ORM(LINQ to SQL)生成模型的项目。 partial 具有附加模型代码的类在另一个文件中手动添加,ORM不会覆盖该文件。 - Drew Gaynor