我有Login page
登录时,用户需要Home Page
加载dynamic menu
。问题是当用户点击其中一个menulink
时loaded menu
不可见
这是因为我在Index action
的{{1}}内编写了代码。
所以我的问题是我应该在哪里写Home controller
,以便点击menulink时可以访问它。
_Layout.cshtml文件,其中加载了菜单
logic for dynamic menu
动态菜单的逻辑在这里
@model SMS.Models.ViewModel.DashboardVM
@if (Model != null && Model.MenuParentList.Count > 0)
{
<!-- Sidebar Menu -->
<ul class="sidebar-menu">
<li class="header">MAIN NAVIGATION</li>
<li class="active">
<a href="#">
<i class="fa fa-dashboard"></i> <span>Dashboard</span>
</a>
</li>
@foreach (var parentItem in Model.MenuParentList)
{
<li class="treeview">
<a href="#">
<i class="fa fa-th"></i>
<span>@parentItem.MenuParentName</span>
<i class="fa fa-angle-left pull-right"></i>
</a>
<ul class="treeview-menu">
@Html.Partial("_MenuParent", Model.MenuList.Where(x => x.ParentID == parentItem.MenuParentID))
</ul>
</li>
}
</ul>
}
答案 0 :(得分:3)
创建一个单独的[ChildActionOnly]
方法,生成您的菜单并从布局页面调用它,以便在所有页面中都可用
[ChildActionOnly]
public ActionResult Menu()
{
var model = new DashboardVM
{
....
}
return PartialView("_Menu", model);
}
并创建一个_Menu.cshtml
局部视图以生成html
@model DashboardVM
....
然后在你的布局中,删除@model SMS.Models.ViewModel.DashboardVM
(布局不应该有模型,除非该模型是布局使用的所有模型的基类)然后包含
@Html.Action("Menu", yourControllerName)
将调用Menu
方法并将其返回的局部视图插入布局。