【问题标题】:Getting Razor page name for conditional loading of script in layout page获取 Razor 页面名称以在布局页面中条件加载脚本
【发布时间】:2021-07-08 18:42:21
【问题描述】:

我需要有条件地在 Razor 页面应用程序的布局页面中加载脚本(该脚本需要在其他脚本加载后加载,但假定元素仅存在于一个页面上)。

我想使用类似的东西

@{
   if (Page.Name == "page_name") {

      <script src="~/js/myscript.js"></script>
   }
}

但找不到获取页面名称的方法。

谁能推荐一种方法来做到这一点?

【问题讨论】:

  • 为什么不将脚本传递到页面中打算使用它的部分?
  • 因为它需要在 site.js 脚本之后加载(使用其中的方法),由布局页面加载。两者都需要在正文加载后加载,因为它们使用 HTML 元素。
  • 顺便说一句,我通过询问 window.location.href 使 JavaScript 代码以页面 URL 为条件解决了这个问题 - 但我确实想知道如何在 Razor 页面本身中执行此操作。

标签: javascript razor-pages


【解决方案1】:

这样做的方法是在现有脚本下方的布局中创建一个新部分,然后从使用该脚本的页面中定位该部分:

布局:

@RenderSection("Scripts", false)
@RenderSection("ExtraScripts", false)

然后在需要使用脚本的页面中:

@section ExtraScripts{
    <script src="~/js/myscripts.js"></script>
}

部分:https://www.learnrazorpages.com/razor-pages/files/layout#sections

如果您希望 myscripts 的内容在主体加载后加载,请将其放入 jQuery 就绪函数或 DomContentLoaded 事件处理程序中。

DomContentLoaded : https://developer.mozilla.org/en-US/docs/Web/API/Window/DOMContentLoaded_event

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 2023-01-18
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 2018-04-16
    相关资源
    最近更新 更多