将javascript文件添加到容器控件

时间:2013-10-16 08:45:11

标签: dotnetnuke skinning dotnetnuke-7

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

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

唯一的问题是,脚本位于皮肤文件夹中不是

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的所有优势!

查看来源和documentation,只有两种PathNameAlias类型,而且没有一种用于容器。

我将脚本添加到容器文件夹的原因是它只用在那个容器中,而不是其他容器。

任何人都知道解决方案吗? 是否可以轻松实现我自己的PathNameAlias

1 个答案:

答案 0 :(得分:0)

您可以使用代码中的Client Resource Manager API在站点目录中的任何位置注册脚本和/或样式表。

在模块的代码隐藏中,使用此

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

            base.OnInit(e);
        }