【问题标题】:How to separate @RenderBody() into two parts如何将@RenderBody() 分成两部分
【发布时间】:2019-11-05 00:44:57
【问题描述】:

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

绿色部分应该来自 _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>

【问题讨论】:

  • @Nkosi 我不是初学者。我知道什么是 layout 以及如何指定它。问题是我的 _HomePage 由两部分组成。其中一部分应该在 .left-col 之前,另一部分应该在 .left-col 之后
  • 我从未暗示你是初学者。我是说你可以使用部分来实现你想要的。检查我之前评论中的部分主题链接。
  • @然后发布你的答案请。因为我在您提供的链接中没有找到任何有用/相关的点。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 2015-05-30
    • 2014-10-21
    • 2017-10-24
    • 2020-04-05
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多