1

因此,使用 MVC3 框架的 aspx 渲染引擎,很容易在主布局页面中定义一个部分,并在这些部分中插入 html 或 asp 代码,这些部分将出现在每个页面上,如下所示:

在主布局上

<!-- Secondary content -->
<div id="content-secondary">
  <asp:ContentPlaceHolder ID="NavigationSecondary" runat="server">
    <% Html.RenderAction("Menu", "Navigation", new { @id = "nav-secondary"}); %>
  </asp:ContentPlaceHolder>
  <asp:ContentPlaceHolder ID="cphSecondary" runat="server" />
</div>
<!-- /Secondary content -->

您可以看到在名为 NavigationSecondary 的 ContentPlaceHolder 中呈现了一个菜单。因此,在我创建的每个页面上,默认情况下都会显示菜单,并且在其下方显示任何其他额外内容。

现在,我将如何在 Razor 引擎中解释这一点?我在网上找不到太多信息。我确实找到了一些显示如何使用默认内容的东西。但是,当插入其他页面的内容时,默认内容会被删除吗?

4

1 回答 1

1

Razor 视图引擎允许检查(在 _Layout.cshtml 中)是否布局部分已由视图实现,因此您可以模拟将代码放入ContentPlaceHolder.

<div id="content-secondary">
    @if (IsSectionDefined("NavigationSecondary"))
    {
        Html.RenderAction("Menu", "Navigation", new {@id = "nav-secondary"});
        @RenderSection("NavigationSecondary")
    }
</div>

希望这是您正在寻找的。

于 2012-06-15T16:42:30.863 回答