【问题标题】:Using _ViewStart on areas for nested content在嵌套内容的区域上使用 _ViewStart
【发布时间】:2012-03-08 04:34:21
【问题描述】:

我有一个 _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”

这种母版页嵌套如何实现?

【问题讨论】:

    标签: asp.net-mvc razor


    【解决方案1】:

    我不想回答我自己的问题,但还是这样:

    如果你想在那里有一个 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

    就是这样。您必须使用“Shared”文件夹才能使用“RenderBody()”方法。

    【讨论】:

      猜你喜欢
      • 2011-05-05
      • 1970-01-01
      • 2020-04-22
      • 2023-03-29
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      相关资源
      最近更新 更多