Layout.cshtml
<table style="width:100%;" class="backcss">
<tr>
<td style="width: 20%; " valign="top" class="corner">
@Html.Partial("_Menu")
</td>
<td valign="top" align="center">
@RenderBody()
</td>
</tr>
</table>
_Menu.cshtml(部分页面)
@if (ViewData["MenuITem"] != null)
{
foreach (var item in ViewData["MenuITem"] as IEnumerable<Conference_Project.Areas.Master.Models.MenuItem>)
{
<b> @item.controller</b>
<b>@item.action</b>
}
}
MenuItem.cs(class)
public class MenuItem
{
public MenuItem(string area, string controller, string action, string name)
{
this.area = area;
this.controller = controller;
this.action = action;
this.name = name;
}
public string area { get; set; }
public string controller { get; set; }
public string action { get; set; }
public string name { get; set; }
}
控制器
public ActionResult _Menu()
{
List<MenuItem> obj = new List<MenuItem>();
obj.Add(new MenuItem("Master", "User", "ViewProfile", "Profile"));
obj.Add(new MenuItem("Master", "User", "StepI", "Abstract"));
ViewData["MenuITem"] = obj;
return PartialView();
}
我想使用控制器传递LeftMenu内容,我试图在控制器中传递部分页面视图但不能正常工作
1)如何在部分页面中动态传递菜单内容?
答案 0 :(得分:2)
@Html.Partial("_Menu")
只需将部分html渲染到布局中。如果要调用生成菜单项的服务器方法,则需要使用@Html.Action()
(或@{ Html.RenderAction(); }
)
<td style="width: 20%; " valign="top" class="corner">
@Html.Action("_Menu", "YourControllerName")
</td>
但我建议您将模型传递到_Menu.cshtml
视图,而不是使用ViewData
[ChildActionOnly]
public ActionResult _Menu()
{
List<MenuItem> menu = new List<MenuItem>();
menu.Add(new MenuItem("Master", "User", "ViewProfile", "Profile"));
.... // add more items
return PartialView(menu);
}
并在_Menu.cshtml
@model IEnumerable<Conference_Project.Areas.Master.Models.MenuItem>
@foreach (var item in Model)
{
<b>@item.controller</b>
<b>@item.action</b>
}
答案 1 :(得分:-1)
你想要传递到其他控制器/视图的内容应该在之前的操作中返回,我的意思是:
public ActionResult _Menu()
{
List<MenuItem> obj = new List<MenuItem>();
obj.Add(new MenuItem("Master", "User", "ViewProfile", "Profile"));
obj.Add(new MenuItem("Master", "User", "StepI", "Abstract"));
ViewData["MenuITem"] = obj;
return PartialView(RETRUNVALUE);
}
作为RETURNVALUE,您将在部分视图的控制器中使用值