Visualizações aninhadas MVC e visualizações parciais
Eu estou no processo de criar um projeto protótipo usando MVC 3 e eu me deparei com uma situação que não consigo encontrar uma resposta e parece que eu poderia estar se aproximando do problema da maneira errada.
Uma rápida visão geral do meu projeto; Ele é baseado no modelo MVC que você obtém com o Visual Studio e eu uso os links (guias) na exibição _Layout fornecida para acessar algumas das minhas outras visualizações. Um desses links abre uma segunda visão parcial que contém novamente links para mais visualizações (específico do administrador, daí a divisão). O problema que estou tendo é que eu não consigo exibir exibições com o@RenderBody
na segunda vista parcial, que eu entendo é porque você não pode ter mais de um@RenderBody
em um arquivo HTML completo, o que faz sentido.
Então, minha pergunta é: como posso exibir as visualizações dessa maneira? Além disso, provavelmente mais importante, esta é a maneira correta de alcançar este sistema 'sub menu' que estou tentando ou existe uma maneira melhor de conseguir isso?
Aqui estão as partes relevantes das visualizações, primeiro é o arquivo 'principal' _Layout:
<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>
Ao clicar no<li id="admin">@Html.ActionLink("Administration", "Administration", "Home")</li>
link, o controlador Home retorna a segunda vista parcial mostrada abaixo:
<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>
Quando tento e executo o código, ele falha devido ao segundo@RenderBody
, o que é compreensível.
Se você precisar de mais alguma informação, por favor me avise.
Muito obrigado.