我在数据库的布局页面中动态加载菜单。所以,我使用Partial View来实现这一目标。这是我的代码:
我创建了一个名为" MenuModel"的模型类:
MenuModel.cs
url(../ServiceHealthApp/HealthIcons/ServHL.png)
我创建了一个名为" Partial"的控制器类:
PartialController.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;
}
我为ActionResult创建了一个PartialView&#34; LoadMenu&#34;:
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;
}
这是我的布局页面:
@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>
}
}
数据库返回两个菜单,例如&#34; Masters&#34;和&#34;发票&#34;。但是当我点击&#34; Masters&#34;菜单,它再次调用部分控制器类,再次调用两个菜单Masters&amp;发票再次加载。所以我无法突出显示现在打开的菜单。我已经附上了Masters屏幕。