MVC вложенные представления и частичные представления
Я нахожусь в процессе создания проекта-прототипа с использованием MVC 3, и я столкнулся с ситуацией, для которой я, кажется, не могу найти ответ, и кажется, что я мог бы подойти к проблеме неправильно.
Краткий обзор моего проекта; он основан на шаблоне MVC, который вы получаете с Visual Studio, и я использую ссылки (вкладки) в прилагаемом представлении _Layout для доступа к некоторым другим моим представлениям. Одна из этих ссылок открывает второе частичное представление, которое снова содержит ссылки для большего количества представлений (специфично для администратора. Отсюда и разделение). Проблема, с которой я сталкиваюсь, заключается в том, что я не могу отображать@RenderBody
во втором частичном представлении, которое, как я понимаю, состоит в том, что у вас не может быть более одного@RenderBody
в готовом файле HTML, что имеет смысл.
So my question is, how can I display the views in this manner? Also, probably more importantly, is this the correct way to achieve this 'sub menu' system I am trying for or is there a better way to achieve this?
Здесь представлены соответствующие части представлений, во-первых, это «главное». _Layout file:
<body>
<div class="page">
<header>
<div id="title">
<h1>Test App</h1>
</div>
<nav>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
@if (User.Identity.IsAuthenticated)
{
<li>@Html.ActionLink("Contracts", "List", "Contract", new { user=User.Identity.Name, page=1 }, null)</li>
}
@if (User.IsInRole("Administrator"))
{
<li id="admin">@Html.ActionLink("Administration", "Administration", "Home")</li>
}
</ul>
</nav>
</header>
<section id="main">
@RenderBody()
</section>
<footer>
</footer>
</div>
</body>
При нажатии на<li id="admin">@Html.ActionLink("Administration", "Administration", "Home")</li>
ссылка, затем контроллер Home возвращает второй частичный вид, показанный ниже:
<header>
<div id="admintitle">
<h1>Administration</h1>
</div>
</header>
<body>
<div id="div-1a">
<nav>
<ul id="adminmenu">
<li>@Html.ActionLink("Contact", "List", "Contact")</li>
<li>@Html.ActionLink("Home", "Index", "Home")</li>
</ul>
</nav>
</div>
<div id="div-1c">
<h1>Test</h1>
</div>
<section id="adminmain">
@RenderBody()
</section>
</body>
Когда я пытаюсь запустить код, он терпит неудачу из-за второго@RenderBody
, что понятно.
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
Спасибо большое.