0

在我的皮肤中,我有一个模块容器,我想在其中添加一个 JavaScript 文件。
没问题,我使用:

<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %>
<dnn:DnnJsInclude runat="server" FilePath="script.js" PathNameAlias="SkinPath" />

唯一的问题是,该脚本不在skins 文件夹中:

Portals\_default\Skins\MySkin\script.js

但在容器文件夹中:

Portals\_default\Containers\MySkin\script.js

添加上面的代码将不起作用,因为它会生成一个指向皮肤文件夹的链接:

<script src="/Portals/_default/Skins/MySkin/script.js?cdv=18" type="text/javascript"></script>

如果我使用这个简单的代码,它确实有效:

<script src='<%= SkinPath %>script.js' />

但是后来我就失去了所有的优势了ClientResourceManagement

查看源代码和文档,只有两种PathNameAlias类型,它们都不是用于容器的。

我将脚本添加到容器文件夹的原因是它只用于那个容器,而没有其他地方使用。

有人知道解决方案吗?
我自己的容易实现PathNameAlias吗?

4

1 回答 1

0

You can use the Client Resource Manager API in your code behind to register scripts and/or stylesheets anywhere in your site directory.

In the codebehind of your module, use this

        override protected void OnInit(EventArgs e)
        {
            ClientResourceManager.RegisterScript(Parent.Page, "~/Portals/-default/Containers/MySkin/script.js");

            base.OnInit(e);
        }
于 2013-12-22T18:45:42.367 回答