clo*_*seq 11 asp.net-mvc menu partial-views
我正在为MVC创建一个动态菜单系统,只是为了使它工作,我创建了一个菜单的局部视图,它使用下面的语法很好用:
@Html.RenderPartial("_Menu", (Models.Menu)ViewBag.MainMenu)
Run Code Online (Sandbox Code Playgroud)
但是,为此,我必须在每个Controller和每个操作的ViewBag中设置MainMenu和FooterMenu(或任何其他菜单).为了避免这种情况,我想知道是否有推荐的事件可以全局访问ViewBag.如果没有,有人建议将Menu对象传递给会话变量吗?这对我来说听起来不对,但我现在才想到的事情.
更新:
_Layout.cshtml - 我包含对Action的新调用:
@Html.Action("RenderMenu", "SharedController", new { name = "Main" })
Run Code Online (Sandbox Code Playgroud)
SharedController.cs - 添加了新动作:
public ActionResult RenderMenu(string name)
{
if (db.Menus.Count<Menu>() > 0 && db.MenuItems.Count<MenuItem>() > 0)
{
Menu menu = db.Menus.Include("MenuItems").Single<Menu>(m => m.Name == name);
return PartialView("_MenuLayout", menu);
}
else
{
return PartialView("_MenuLayout", null);
}
}
Run Code Online (Sandbox Code Playgroud)
它抛出以下异常:
未找到路径'/'的控制器或未实现IController.
更新2:
所以,问题是我用全名引用了Controller,你只需要控制器的名称减去"Controller".整洁的花絮.所以,对于我的例子,这有效:
@Html.Action("RenderMenu", "Shared", new { name = "Main" })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11789 次 |
| 最近记录: |