1

我正在自定义 Tridion 功能区工具栏以添加一个按钮。如何在 .NET ASPX 页面中访问 Tridion 控件,例如按钮和下拉菜单?

4

2 回答 2

4

您的问题对于您到底想要完成什么有点模糊,要向功能区工具栏添加一个按钮,您不需要 ASPX 页面。

但是,如果您的功能区按钮打开一个弹出窗口,您想在其中使用 Tridion 控件,您将必须从导入 Tridion.Web.UI 命名空间开始。

在您的 ASPX 页面中,您可以添加:

<%@ Import Namespace="Tridion.Web.UI" %>
<%@ Register TagPrefix="ui" Namespace="Tridion.Web.UI.Editors.CME.Controls" Assembly="Tridion.Web.UI.Editors.CME" %>

在您的 ASPX 页面的头部,您应该提到 tridion 管理器控件:

<cc:tridionmanager runat="server" editor="ExampleEditor" isstandaloneview="true">
    <dependencies runat="server">       
        <dependency runat="server">Tridion.Web.UI.Editors.CME</dependency>
        <dependency runat="server">Tridion.Web.UI.Editors.CME.Controls</dependency>
    </dependencies>
</cc:tridionmanager>

然后您可以使用页面中的控件。确保不要忘记命名空间引用

xmlns:c="http://www.sdltridion.com/web/ui/controls"

然后,您背后的代码应该从 Tridion 视图扩展,例如 Tridion.Web.UI.Editors.CME.Views.Popups.PopupView

using Tridion.Web.UI.Core;
using Tridion.Web.UI.Controls;
using Tridion.Web.UI.Core.Controls;
using Tridion.Web.UI.Editors.CME.Views.Popups;

namespace Extensions.Example.Views
{
    [ControlResources("Extensions.Example.Views.ExampleDialog")]
    [ControlResourcesDependency(typeof(Stack))]
    public class ExampleDialog : PopupView
    {
    }
}

这一切都是可能的,但不确定重用 Tridion 控件的支持级别。据我所知,它们不是公共 API 的一部分,也没有任何内容记录在任何地方(您可以查看 ..\Tridion\web\WebUI\Editors\CME\Views 目录中的 ASPX 页面,但您没有任何东西背后的代码示例,这些代码基本上都不存在)。因此,如果您想在此处使用 .NET,我实际上会建议您不要重用现有控件和 ASPX 页面中的控件。在这种情况下,只需使用您自己的控件。如果这些控件需要访问 Tridion CMS,您应该让他们为此使用核心服务。

当然可以将 Tridion 控件与 JavaScript API 结合使用,如现有视图中所示。如果您在页面上使用c:Button控件,则可以在 JavaScript 代码中访问它,如下所示:

var p = this.properties;
var c = p.controls;
c.BtnExmpl = $controls.getControl($("#BtnID"), "Tridion.Controls.Button");

// add an event handler like this
$evt.addEventHandler(c.BtnExmpl, "click", this.getDelegate(this._onExmplClicked));
于 2012-03-27T15:45:41.927 回答
2

这篇文章可能会对您有所帮助http://www.tridiondeveloper.com/ribbon-item-group

虽然我相信存储在编辑器本身中的任何 ASPX 或 ASCX 的输出都会被缓存,因此创建 CM 功能的首选方法是使用存储在模型中的 JavaScript 和后台服务,您可能需要查看开源 PowerTools项目以获得更多想法(http://code.google.com/p/tridion-2011-power-tools/)。

于 2012-03-27T13:38:22.753 回答