如何将@RenderBody()分为两部分

时间:2019-06-22 13:06:17

标签: c# html asp.net-mvc asp.net-core

我正在使用ASP.NET Core 2.2。我的问题是我不知道在哪里使用 我的 _Layout 页面中的@RenderBody()。这是我想做的事情的表示: enter image description here

绿色部分应来自 _Layout ,白色部分应来自 HomePage.cshtml 。我的 HomePage 由一个滑块和下面的内容列表两部分组成。这是我尝试过的方法,但由于无法将滑块放入其中,因此无法满足我的需求。

这是 _Layout

<html>
   <body>
       <main>
       <header></header>
       <div class="left-col">
       <div class="content">@RenderBody()</div>
       <div class="right-col">
       <footer></footer>
    </main>
   </body>
</html>

1 个答案:

答案 0 :(得分:3)

您可以在布局中定义一个部分以呈现所需的内容

HomePage.cshtml

@{
    ViewBag.Title = "Home Page";
}

@section Slider {

   <div>My HomePage slider</div>

}

<p>My HomePage content</p>

布局将检查该部分是否存在,如果存在则进行渲染

_Layout.cshtml

<html>
   <body>
       <main>
       <header></header>
    @if (IsSectionDefined("Slider")) {
       <div class="homepage-slider">
         @RenderSection("Slider", required: false)
       </div>
    }
       <div class="left-col">
       <div class="content">@RenderBody()</div>
       <div class="right-col">
       <footer></footer>
    </main>
   </body>
</html>

您显然必须指定将样式放置在所需位置所需的样式。

引用Layout in ASP.NET Core: Sections