ASP.Net MVC3 Меню с другой моделью в качестве контента (частичное представление, визуализация страницы?) - PullRequest
2 голосов
/ 15 апреля 2011

У меня есть страница с меню исправлений на левой стороне.Этому частичному представлению нужна другая модель в качестве главной страницы (контента).

Masterpage / Layout:

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

Index / Content Page, которая вызывается при запуске:

@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 Ответ

4 голосов
/ 15 апреля 2011

Я бы использовал Html.RenderAction для рендеринга 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 });
}

Отказ

Код не проверен :)

...