Как предоставить общий макет модели в Razor MVC?

Я пытаюсь дать модель для общего макета, поэтому ссылки меню создаются динамически из базы данных. Любые идеи, с которых я должен начать?

Я ищу, возможно, учебники о том, как использовать наследование для этого?

Ответ 1

Вы можете сделать это:

Model

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().

Я не уверен, что эта реализация является лучшей практикой, но она, безусловно, работает.