在布局页面asp.net mvc5中动态加载菜单?

时间:2017-03-09 17:12:23

标签: c# asp.net-mvc

我想在mvc。

的布局页面中动态加载菜单

我创建了Viewcode,菜单和菜单项的模型。现在我想要的是我想动态加载菜单。它必须从数据库中检索数据并加载到布局页面。

我的模特

菜单型号

    public Menu()
    {
        MenuItems = new List<MenuItem>();
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public List<MenuItem> MenuItems { get; set; }

我的模型MenuItem

  public class MenuItem
{
    public int Id { get; set; }
    public int UserName { get; set; }
    public string Name { get; set; }
    public string ActionName { get; set; }
    public string ControllerName { get; set; }
    public string Url { get; set; }
    public Menu ParentMenu { get; set; }
} 

我的控制器

   public ActionResult Index()
    {
        var query = db.ApplicationNames.ToList();
        ViewBag.Menu = query;
        return View();
    }

现在我已经创建了模型和控制器代码。现在我想要进一步的指导,这是我如何在布局页面中显示这些应用程序名称。如果我点击菜单,它必须重定向到相应的页面。 他们中的许多人说在局部视图中加载菜单并在布局页面中调用局部视图。但是如何在局部视图中加载菜单并将菜单更改为ActionLink。我需要一些指导和解决方案来解决这个问题。任何人都能理解我的问题并为我的问题提供解决方案。

谢谢..

1 个答案:

答案 0 :(得分:1)

您可以将菜单列表发送到局部视图,假设我有数据

var menu = new Menu();
menu.Name = "Main Menu";

var  items= new List<MenuItem>(){new MenuItem {Name="FirstMenu",ControllerName = "Home",ActionName="Index"}};

Menu.MenuItems = items;

   return View(menu);

现在在我看来,我将根据给定的数据添加菜单

@model List<Models.Menu>

 <ul>

                 <li>
                    <a href="#">

                        <span>@Model.Name</span>

                    </a>
                    <ul>
                        @foreach (var item in Model.MenuItems)
                        {
                            <li><a href="@Url.Action(@item.ActionName , @item.ControllerName )"><i class="fa fa-circle-o"></i>@item.Name</a></li>
                        }
                    </ul>
                </li>
   </ul>