【问题标题】:How do I append a class to my body tag using RenderBody()如何使用 RenderBody() 将类附加到我的身体标签
【发布时间】:2020-08-17 10:18:19
【问题描述】:

所以到目前为止,我正在使用我的 _Layout.cshtml 页面来构建页眉、正文和页脚,并且在 bodu 中我这样做是为了呈现我的索引页面:

<body class="darkDesign">
    <div class="container-fluid">
        @RenderBody()
    </div>
</body>

而我的索引页面只是模板自带的默认页面:

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

问题是我想向body 标签添加一个类,但它不会渲染它,因为它似乎是 RenderBody 为我动态渲染 body 标签,这就是它在 DOM 编辑器中的样子铬。

如何正确地将类添加到 body 标记中?

【问题讨论】:

  • RenderBody 不会动态渲染正文,请查看布局模板,body 标记在那里是显式的。你甚至还有 darkDesign 的课程。
  • 然而它并没有在 DOM 中呈现,这是为什么呢?
  • 我在你的源代码中没有看到&lt;!--Loader starts--&gt;,所以我认为你使用了一些 JS 库/框架,如果是这样,请确保库/框架不会改变 html。顺便说一句,在您的浏览器中尝试查看页面源代码 (Ctrl + U),我相信您将能够在body 标签中看到darkDesign 类。
  • @MehdiDehghani 检查页面源时该类是否存在
  • 您是否有一个 _ViewStart.cshtml 文件,并且是预期的 _Layout.cshtml 吗?在 chrome 输出中,我也希望 darkdesign 类显示在上图中,除非某些 js 正在剥离该类。

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


【解决方案1】:

不是 Razor 的问题,正如 @Wiktor-Zychla 提到的,RenderBody 不会动态呈现主体 标签。 (RenderBody中的Body表示页面/布局内容/body)

正如我在评论部分提到的,&lt;!--Loader starts--&gt; 部分不在您的源(Razor)中,因此当您在浏览器中访问该页面时,JS 删除了 darkDesign 类。正如您所确认的,您应该能够在页面源代码的body 标记中看到darkDesign 类。 (在浏览器中点击Ctrl + U查看页面源代码)

所以

  • 如果您使用一些 JS 库/框架(或 jQuery 插件),您应该查看他们的文档以了解他们为什么从 body 中删除类。也许您可以禁用此行为或告诉他们添加您的课程。
  • 另一种方法(简单而肮脏的方法)是使用 JS 添加类,只需确保您的代码在其代码之后执行即可。

您可以提及您使用的库/框架(或 jQuery 插件),也许我可以帮助您更多。

【讨论】:

    猜你喜欢
    • 2021-09-12
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    相关资源
    最近更新 更多