Kentico 7 在 Portal Master 中创建内容占位符以在继承页面的 ASCX 中使用

Kentico 7 create content placeholder in Portal Master to use in ASCX in inherited page

在从 Portal Master 继承的 Ad-Hoc 页面上使用 Kentico 7。我想在呈现的临时页面中的 </body> 标记之前插入一些文字脚本或代码。

我想我必须通过编辑 Portal Master 并添加以下内容来做到这一点:

<cms:CMSPagePlaceholder ID="plcBodyEnd" runat="server">
   <LayoutTemplate>
   </LayoutTemplate>
</cms:CMSPagePlaceholder>

然后在 Ad-Hoc 页面的布局中执行此操作:

<cms:CMSContent runat="server" id="cntLeft" PagePlaceholderID="plcBodyEnd">
<script type="text/javascript"> 
ProviderConnections.Transparency.initializeWidget({ }); 
</script> 
</cms:CMSContent>

在我转到 Ad-Hoc 页面上的设计选项卡之前一切正常,但出现以下错误:

Object reference not set to an instance of an object.

我不想注册脚本块。我只想将文本放在由 Portal Master 控制的 </body> 标记之前的 Ad-Hoc 页面中。

我做错了什么?

我不是 100% 确定您要实现的目标。举个例子或附上截图会很有帮助。

以下是在 Kentico 中附加 JavaScript 的方法:

通过门户引擎:

  • 使用 JavaScript Web 部件 - 让您可以选择脚本的位置

以编程方式从代码隐藏:

  • 使用 CMS.Helpers.ScriptHelper API(包装 ASP.NET 的 ClientScriptManager
    • ScriptHelper.RegisterStartupScript() 将脚本放在页面末尾
    • ScriptHelper.RegisterClientScriptBlock() 将脚本放在页面元素之前
  • 两者的区别很好解释here

以编程方式来自 ASPX 标记:

  • 将您的 <script> 块放在 .aspx / .ascx 文件中的所需位置
  • 计算包含脚本的代码隐藏变量

    <asp:Button ID="btnOK" runat="server" Text="OK" /> <script type="text/javascript"> <%= fieldWithActualScript %> </script>