如何向Tridion RTF提交aspx页面值

如何向Tridion RTF提交aspx页面值,tridion,tridion-2011,Tridion,Tridion 2011,我正在创建TridionGUI扩展,在这个扩展中,我在功能区工具栏中创建了一个按钮(“InsertCP”)。 情况是: 1.用户从组件的富文本框中选择任何文本 2.用户单击功能区工具栏上的“InsertCP”按钮。 3.当用户单击按钮时,我正在打开我的自定义aspx页面。 4.从自定义aspx页面,用户可以选择“组件”和“组件模板”。 5.我将所选组件和组件模板tcm id存储在变量中。 6.我在自定义aspx页面中有提交按钮。 7.当用户单击“提交”按钮时,我需要在富文本框源中设置所选文本的格

我正在创建TridionGUI扩展,在这个扩展中,我在功能区工具栏中创建了一个按钮(“InsertCP”)。 情况是:

1.用户从组件的富文本框中选择任何文本
2.用户单击功能区工具栏上的“InsertCP”按钮。
3.当用户单击按钮时,我正在打开我的自定义aspx页面。
4.从自定义aspx页面,用户可以选择“组件”和“组件模板”。
5.我将所选组件和组件模板tcm id存储在变量中。
6.我在自定义aspx页面中有提交按钮。
7.当用户单击“提交”按钮时,我需要在富文本框源中设置所选文本的格式,如下所示。

例:

和java脚本与退出脚本相同。。 但我在运行时出错。我需要在cs页面中添加任何名称空间吗

我的CS页面将有如此多的事件如下。我不能使用tridion控制按钮此页面

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tridion.ContentManager.CoreService.Client;
using System.Xml.Linq;
using System.Xml;


namespace Somename
{

public partial class Classname
{

    protected void Page_Load(object sender, EventArgs e)
    {

    }


    protected void ddSelectOption_SelectedIndexChanged(object sender, EventArgs e)
    {



    }


    protected void lbPublication_SelectedIndexChanged(object sender, EventArgs e)
    {

    }


    protected void lbPubFolders_SelectedIndexChanged(object sender, EventArgs e)
    {


    }


    protected void lbComponent_SelectedIndexChanged(object sender, EventArgs e)
    {

    }


    protected void lbComponentTemplate_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

查看您的更新,我收集您想要的是根据ASPX页面中的信息创建一个锚元素,并将其插入组件的富文本字段的选定文本中

要构建这样的东西,你最好看看类似的东西。我能想到的最简单的例子是“格式”功能区工具栏中的“超链接”按钮。这包括两个项目:

  • ..\Tridion\WebUI\Editors\CME\Views\Popups\Link\Link.aspx
  • ..\Tridion\WebUI\Editors\CME\Views\Popups\Link\Link.js
  • 神奇的一切都发生在JavaScript文件中(通常是在这些UI扩展中完成的)。在
    initialize()
    方法中,将按如下方式提取所选零件:

    var p=this.properties;
    var c=p.对照组;
    //获取选定的首字母缩略词
    p、 OldLink=(window.dialogArguments&&window.dialogArguments.link)?window.dialogArguments.link:{};
    
    返回富文本字段的post是在
    \u onOkButtonClicked(event)
    方法中完成的,如下所示:

    this.\u buildNewLinkHtml();
    this.firevent(“提交”{link:this.properties.NewLink});
    window.close();
    
    您可以仔细查看Link.js文件中的其余代码,并根据需要重新构建它

    顺便说一句,看看你想在href中发回的信息,我想说,如果你根据某种标准对其进行更多的格式化,这会更容易,例如,你可以将URI像JSON一样放在那里:

    
    
    甚至可能滥用组件模板URI的title属性:

    
    
    因为我假设您的组件模板代码将使用这些值来处理这个超链接构造

    编辑 在添加的图像中显示的无法识别的标记前缀c错误,可以通过添加正确的名称空间引用来解决,如我在。因此,只需将其添加到HTML元素中:

    
    

    至于无法识别的cc标记前缀,您不必为它操心,因为您在Tridion上下文中运行它,所以它似乎在运行时得到了很好的解决。

    我将为您更新的问题提供第二个答案,尽管你仍然让我们有点蒙在鼓里,因为你只提到你得到了一个运行时错误,而不是它到底是什么(如果我不知道你得到了什么错误,我不可能提供一个好的答案)

    您的ASPX页面应如下所示:

    
    我的弹出示例
    Tridion.Web.UI.Editors.CME
    Tridion.Web.UI.Editors.CME.Controls
    我的标签
    
    注意:表标记是直接从锚弹出窗口复制的,可以随意使用div来代替,并以任何方式设置它们的样式,该示例旨在向您展示如何重用现有的Tridion控件 您的CS将成为:

    使用Tridion.Web.UI.Core;
    使用Tridion.Web.UI.Controls;
    使用Tridion.Web.UI.Core.Controls;
    使用Tridion.Web.UI.Editors.CME.Views.Popups;
    名称空间示例
    {
    [ControlResources(“Example.MyPopup”)]
    公共类MyPopup:PopupView
    {
    }
    }
    

    它不包含任何内容,也不需要包含任何内容,正如前面所述,您将在JavaScript中执行的所有操作。

    您所选文本的示例有点不清楚,也许您可以在其中添加更多细节,具体需要做什么?我需要创建一个像我所展示的那样的标签。请查看更新的问题这很有帮助,但我在一个地方结巴,我如何用我的提交按钮将我在aspx页面中的选择提交给RTF。在现有的选项中,他们使用的是Tridion控制按钮。所以在我的情况下,我的页面上没有任何Tridion控制按钮。如果我试图创建一个,这是不允许的。请帮助UI通过JavaScript框架工作,因此您必须使用Tridion控件按钮,或者您必须找到某种方法将您的按钮连接到JavaScript。我的问题与[.我遵循了你的步骤,但我遇到了错误。我如何使用我的asp按钮作为tridion控件按钮。确定意味着我需要遵循相同的步骤。但我如何删除错误,例如:不支持依赖项。你无法将自己的控件连接到JavaScript,只需使用
    c:button
    就像在Link.aspx中完成的那样,我已经更新了我的另一个答案,以包含有关如何在JavaScript中使用Tridion控件的更多信息。至于你的错误,我不知道你有什么代码,所以我无法解决(我的水晶球目前没有提供答案;o)正如你说的,我无法解决
    <html xmlns="http://www.w3.org/1999/xhtml"     xmlns:c="http://www.sdltridion.com/web/ui/controls"> 
    <head runat="server">
    <title></title>
    <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> 
    </head>
    
    <div>
        <asp:TextBox ID="txttags" runat="server" Width="800px"      ></asp:TextBox>       
        <asp:Button ID="btnsubmit" runat="server" Text="Submit"     onclick="btnsubmit_Click"  /> 
    
             <c:button id="InsertButton" runat="server" class="customButton greybutton" label="Insert" />         
    </div>
    
    protected void btnsubmit_Click(object sender, EventArgs e)
        {
    txttags.Text = "anyvalue.";
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Tridion.ContentManager.CoreService.Client;
    using System.Xml.Linq;
    using System.Xml;
    
    
    namespace Somename
    {
    
    public partial class Classname
    {
    
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
    
        protected void ddSelectOption_SelectedIndexChanged(object sender, EventArgs e)
        {
    
    
    
        }
    
    
        protected void lbPublication_SelectedIndexChanged(object sender, EventArgs e)
        {
    
        }
    
    
        protected void lbPubFolders_SelectedIndexChanged(object sender, EventArgs e)
        {
    
    
        }
    
    
        protected void lbComponent_SelectedIndexChanged(object sender, EventArgs e)
        {
    
        }
    
    
        protected void lbComponentTemplate_SelectedIndexChanged(object sender, EventArgs e)
        {
    
        }