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

Posted

技术标签:

【中文标题】如何将@RenderBody() 分成两部分【英文标题】:How to separate @RenderBody() into two parts 【发布时间】: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>

【问题讨论】:

阅读部分docs.microsoft.com/en-us/aspnet/core/mvc/views/… @Nkosi 我不是初学者。我知道什么是 layout 以及如何指定它。问题是我的 _HomePage 由两部分组成。其中一部分应该在 .left-col 之前,另一部分应该在 .left-col 之后 我从未暗示你是初学者。我是说你可以使用部分来实现你想要的。检查我之前评论中的部分主题链接。 @然后发布你的答案请。因为我在您提供的链接中没有找到任何有用/相关的点。 【参考方案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

【讨论】:

以上是关于如何将@RenderBody() 分成两部分的主要内容,如果未能解决你的问题,请参考以下文章

如何将一个 html 表格并排分成两部分?

正则表达式 - 如何将此字符串分成两部分

Three.js:如何使用平面将物体分成两部分?

如何将 ms 访问报告的详细信息部分分成两页进行打印预览和打印?

应用T-SQL语言,如何将一列的只分成两列显示,这样的语句怎么写呢?

如何将视图中的“RenderBody”和“RenderBody”内容作为单独的“标题”和“页脚”文件提供?