2011-04-15 68 views
2

我有一个页面,在左侧有一个修复菜单。此部分视图需要与主页(内容)不同的模型。ASP.Net MVC3不同模型的内容菜单(局部视图,渲染页?)

母版/布局:

<body> 
<div id="IndexMenu"> 
    <div id="IndexMenuInner">@RenderPage("~/Views/Admin/part/_Menu.cshtml", new { LocationAdminModelCollection = new Model; })</div> 
</div> 
<div id="BodyContent"> 
    @RenderBody() 
</div> 

索引/内容页这哪里叫在开始:

@model Survey.WebApplication.Models.ChecklistDetailsModel 

@{ 
    ViewBag.Title = "Survey Administration"; 
    Layout = "~/Views/Admin/_Layout.cshtml"; 
} 

<link href="@Url.Content("~/Content/Admin/Menu.css")" rel="stylesheet" type="text/css" /> 

<div id="IndexSubMenu">sub_Menu</div> 

<div> 
<div id="IndexMenuInner"></div> 
</div> 

我的菜单:

@model Survey.WebApplication.Models.LocationAdminModelCollection 

@{ 
    Layout = null; 
} 

<div class="menuLocation"> 

</div> 

何我可以做这个?

回答

4

我会使用Html.RenderAction在你的控制器上渲染一个Action。在这一行动中,您只需创建你的菜单所需要的模型,并通过了Menu.cshtml局部视图作为PartialViewResult

所以不是@RenderPage("~/Views/Admin/part/_Menu.cshtml", new { LocationAdminModelCollection = new Model; })

你会怎么做:

@{ Html.RenderAction("Menu", "Site"); } 

其中站点是您SiteController和菜单是一样的东西:

public ActionResult Menu() 
{ 
    return PartialView("Menu", new { LocationAdminModelCollection = new Model }); 
} 

免责声明

代码没有测试 :)

+0

PartialViewResult没有参数和发送的RenderAction我的编译错误:-) – Sand 2011-04-15 12:03:25

+0

你去那里。更新了工作答案:) – 2011-04-15 12:07:38

+0

以下解决方案我成功了:http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx - 谢谢Nilsen – Sand 2011-04-15 12:10:19