【问题标题】:How to give shared layout a model in Razor MVC?如何在 Razor MVC 中为共享布局提供模型?
【发布时间】:2011-12-13 10:50:47
【问题描述】:

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

我正在寻找有关如何使用继承来做到这一点的教程?

【问题讨论】:

    标签: asp.net-mvc inheritance razor


    【解决方案1】:

    你可以这样做:

    型号

    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() 操作中的数据库中获取您需要的任何内容。

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

    【讨论】:

    • 我能问一下,你为什么使用部分类?
    • 这里没有必要,但我经常在项目中工作,其中模型由 ORM (LINQ to SQL) 生成为partial 类,并在另一个文件中手动添加了额外的模型代码不会被 ORM 覆盖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多