0

我创建了自定义 DNN 模块。
我想在其中使用砌体插件。
所以在 VS 的模块项目中,我创建了Scripts文件夹并将JS文件放在那里。
在 ascx 文件的视图中,我添加了:

<script src="Scripts/jquery.infinitescroll.min.js"></script>
<script src="Scripts/masonry.pkgd.js"></script>
<script src="Scripts/imagesloaded.js"></script>

但是当我在控制台中加载页面模块时,我得到:

GET http://dnn7site/resources/shared/scripts/jquery/jquery.min.map 404 (Not Found) Masonry:457
GET http://dnn7site/jquery.min.map 404 (Not Found) Masonry:464
GET http://dnn7site/Demos/Scripts/masonry.pkgd.js 404 (Not Found) Masonry:751
GET http://dnn7site/Demos/Scripts/imagesloaded.js 404 (Not Found) Masonry:752
GET http://dnn7site/Demos/Scripts/jquery.infinitescroll.min.js 404 (Not Found) 

在 DNN 中添加和设置脚本的相对路径的方法是什么?

4

3 回答 3

2

您应该使用客户端依赖框架在 DotNetNuke 中包含脚本(在 DNN 6.1+ 中添加了该功能)。它将控制优先级并允许框架将脚本组合在一起以获得更有效的有效负载。

该信息的 wiki 条目在这里:

http://www.dnnsoftware.com/wiki/Page/Client-Resource-Management-API

本质上,它就像这样简单:

<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %>

<dnn:DnnJsInclude runat="server" FilePath="~/Resources/Shared/Scripts/jquery/jquery.hoverIntent.min.js" />

如果你想通过代码做到这一点,试试这个:

RegisterStyleSheet(Page page, string filePath) //default provider and default priority
于 2013-09-01T10:31:13.837 回答
2

对于自定义模块中的脚本或 css,我通常将调用 ClientResourceManager 放在控件的 PreRender 事件中。我使用 ControlPath 来获取模块控件的相对路径以引用脚本。例子:

protected override void OnPreRender(EventArgs e)
{
    ClientResourceManager.RegisterStyleSheet(this.Page, this.ControlPath + "css/view.css");
    ClientResourceManager.RegisterScript(this.Page, this.ControlPath + "js/view.js");
}
于 2013-09-04T21:04:39.823 回答
0

根据Masonry 入门文档中的说明,尝试包含资源文件的完整路径:

在您的站点中包含 Masonry 脚本。

<script src="/path/to/masonry.pkgd.min.js"></script>

例如:

<script src="/desktopmodules/com.demo.masonry/Scripts/jquery.infinitescroll.min.js"></script>
<script src="/desktopmodules/com.demo.masonry/Scripts/masonry.pkgd.js"></script>
<script src="/desktopmodules/com.demo.masonry/Scripts/imagesloaded.js"></script>
于 2013-09-01T08:33:51.517 回答