当前位置:  开发笔记 > 编程语言 > 正文

在ASP.NET Core PartialView中加载脚本后的“呈现脚本”部分

如何解决《在ASP.NETCorePartialView中加载脚本后的“呈现脚本”部分》经验,为你挑选了1个好方法。

在ASP.NET Core应用中,我有一个带有小部件的仪表板。每个小部件都有其自己的PartialViews,因此,可以通过以下方式生成整个页面:

-Layout.cshtml

--Dashboard.cshtml

--- Widget1.cshtml

--- Widget2.cshtml

根据快速页面加载时间的最佳做法,在Layout.cshtml中的结束标记之前加载JavaScript 。之后,有一个自定义JS的部分,我通常用它来在页面加载时初始化对象。因此,本节如下所示:


@RenderSection("Js", required: false)

在使用Layout.cshtml作为布局的视图(在此示例中,其Dashboard.cshtml)中,我可以定义一个部分,例如

@section Js {
    // Js Code here
}

在包含所有脚本文件的script标记之后呈现。因此,我可以确定,这里有jQuery或自定义类之类的所有依赖项。

但是我还需要在Widget1.cshtml之类的小部件中执行此操作。问题是:我在Dashboard.cshtml中加载PartialView Widget1.cshtml。在文档中写道,这是不可能的:

如果在局部视图中声明“剃刀”部分,则其父级将不可见;它将限于局部视图。

但这正是我所需要的。有没有办法解决此限制?不久,目标是将JavaScript从PartialView注入到LayoutView,并在它们之间插入常规View。

我知道的唯一方法是使用setInterval()并以低间隔(例如50ms)使用,并检查是否在循环中定义了jQuery或我的某些自定义类,直到它们被定义为止。它是一个JS解决方案。但这使得可以将脚本块直接包含在PartialView中,而无需使用各节。当您依赖jQuery之类的单个变量时,它非常适合。

但是我需要等待自定义类被加载。它们包含在jQuery之后。因此,waitForTypeLoaded(type, callback)不可能编写类似的泛型函数。这会使我总是写原始的setInterval()代码,这对我来说似乎不是一个明智的解决方案。



1> 小智..:

在完成Jquery加载后,我做了一些使我的脚本运行的操作,该操作在我的局部视图和视图组件中,我使用“ DOMContentLoaded”事件在页面完成加载后加载了所有jQuery js脚本。这样,我可以推迟jQuery的加载,并在页面上仍然保留jQuery代码。


推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有