0

我正在从数据库的布局页面中动态加载菜单。所以,我使用局部视图来实现这一点。这是我的代码:

我创建了一个名为“MenuModel”的模型类:

菜单模型.cs

public class MenuModel
{
    public List<MainMenu> MainMenuModel { get; set; }        
}

public class MainMenu
{
    public int MainMenuID;
    public string MainMenuName;
    public string MainMenuController;
    public string MainMenuAction;
}

我创建了一个名为“Partial”的控制器类:

部分控制器.cs

 using System.Data.Entity;
 using Insights.Models;

 public ActionResult Index()
 {
        return View();
 }

 [ChildActionOnly]
 public ActionResult LoadMenu()
 {
        MenuModel ObjMenuModel = new MenuModel();
        ObjMenuModel.MainMenuModel = new List<MainMenu>();
        ObjMenuModel.MainMenuModel = GetMainMenu();
        return PartialView(ObjMenuModel);
 }

 public List<MainMenu> GetMainMenu()
 {
        List<MainMenu> ObjMainMenu = new List<MainMenu>();

        var context = new InsightsEntities();

        ObjMainMenu = context.Insights_mMenu.Where(m => m.parentMenuUID == 0).Select(x => new MainMenu()
        {
            MainMenuID = x.menuUID,
            MainMenuName = x.menuName,
            MainMenuController = x.menuURLController,
            MainMenuAction = x.menuURLAction
        }).ToList();

        return ObjMainMenu;
 }

我为 ActionResult "LoadMenu" 创建了一个 PartialView:

@model Insights.Models.MenuModel

@{
    foreach (var MenuItem in Model.MainMenuModel)
    {

    <li class="active">
        <div class="sidebar-menu-item-wrapper">
            <a href='@Url.Action(@MenuItem.MainMenuAction, @MenuItem.MainMenuController)'><span>@MenuItem.MainMenuName</span></a>
        </div>
    </li>
    }
}

这是我的布局页面:

<ul class="sidebar-menu on-click" id="main-menu">
     <li class="active">
           <div class="sidebar-menu-item-wrapper">
               <a href="#">
                   <i class="icon-home"></i>
                   <span>Home</span>
               </a>
           </div>
     </li>

     @{ Html.RenderAction("LoadMenu", "Partial"); }
</ul>

在此处输入图像描述 数据库返回“Masters”和“Invoice”两个菜单。但是当我单击“Masters”菜单时,它再次调用部分控制器类,并且再次加载两个菜单 Masters & Invoice。所以我无法突出显示现在打开了哪个菜单。我附上了大师屏幕。

4

0 回答 0