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

Beg*_*ner 11 asp.net-mvc inheritance razor

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

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

Dre*_*nor 11

你可以这样做:

模型

public partial class Menu
{
    public String[] items;

    public Menu(String[] items)
    {
        this.items = items;
    }
}
Run Code Online (Sandbox Code Playgroud)

查看(_Menu)

@model YourMVC.Models.Menu

<ul>
    @foreach (String item in Model.items)
    {
        <li>@item</li>
    }
</ul>
Run Code Online (Sandbox Code Playgroud)

把它放在_Layout中

@Html.Action("_Menu", "Home")
Run Code Online (Sandbox Code Playgroud)

控制器(HomeController)

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

    return PartialView(new Menu(items));
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这里没有必要,但我经常处理模型由 ORM(LINQ to SQL)生成的“部分”类的项目,在另一个文件中手动添加额外的模型代码,它不会被 ORM 覆盖. (2认同)