2011-04-15 64 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