ASP.Net MVC3菜单有不同的模型作为内容(局部视图,渲染页?)

时间:2011-04-15 11:44:21

标签: asp.net-mvc-3 model renderpartial

我的页面左侧有一个修复菜单。此部分视图需要与主页面(内容)不同的模型。

母版/布局:

<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>

我可以这样做吗?

1 个答案:

答案 0 :(得分:4)

我会使用Html.RenderAction在Controller上呈现一个Action。在该操作中,您只需创建菜单所需的模型,并将Menu.cshtml部分视图作为PartialViewResult传递

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

你会这样做:

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

其中Site是您的SiteController,Menu类似于:

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

声明

代码未经过测试:)