我有一个_ViewStart定义我的项目的主布局(页眉,页脚).
在这个项目中,我有几个领域.每个区域都有相同的页眉和页脚,以及自己的侧面菜单.为此,我在该区域的根目录上创建了一个_ViewStart.这是(简化)代码:
/Views/_ViewStart.cshtml
@{ Layout = "~/Views/Shared/_Layout.cshtml"; }
/Views/Shared/_Layout.cshtml
<html> <div> //header </div> <div> @RenderBody </div> </html>
区域Foo – > /Areas/Foo/Views/_ViewStart.cshtml
@{ Layout = "~/Views/Shared/_Layout.cshtml"; } <div class="row"> <div class="sidemenu"> //default sidemenu for this area </div> <div> @RenderBody() </div> </div>
页面/Areas/Foo/Views/Bar/Index.cshtml将无法呈现,我收到此错误:
CS0103:当前上下文中不存在名称“RenderBody”
如何实现这种母版嵌套?
解决方法
我讨厌回答我自己的问题,但在这里:
如果您想在那里使用RenderBody,则无法直接在您所在区域的_ViewStart上引用网站的根_ViewStart.
所以解决方案是:
/Views/_ViewStart.cshtml引用/Views/Shared/_MainLayout.cshtml
/Areas/Foo/Views/_ViewStart.cshtml参考/Areas/Foo/Views/Shared/_AreaLayout.cshtml
/Areas/Foo/Views/Shared/_AreaLayout.cshtml参考/Views/Shared/_MainLayout.cshtml