我正在使用 MVC 3 创建原型项目,我遇到了一种情况,我似乎无法找到答案,而且似乎我可能以错误的方式处理问题。
我的项目的快速概述;它基于您通过 Visual Studio 获得的 MVC 模板,我使用提供的 _Layout 视图上的链接(选项卡)来访问我的一些其他视图。其中一个链接会打开第二个部分视图,其中再次包含更多视图的链接(特定于管理员。因此进行了拆分)。我遇到的问题是我似乎无法使用@RenderBody
在第二个部分视图中,我理解这是因为你不能拥有多个@RenderBody
在一个完整的 HTML 文件中,这是有道理的。
所以我的问题是,如何以这种方式显示视图?另外,可能更重要的是,这是实现我正在尝试的“子菜单”系统的正确方法还是有更好的方法来实现这一点?
这是视图的相关部分,首先是“主”_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>
当点击<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
,这是可以理解的。
如果您需要更多信息,请告诉我。
非常感谢。