【问题标题】:How to return data from aspx page to RTF field?如何将数据从 aspx 页面返回到 RTF 字段?
【发布时间】:2012-04-18 02:45:21
【问题描述】:

我正在自定义功能区工具栏并向其添加一个按钮。每当我单击该按钮时,它将打开一个 aspx 页面,允许作者选择一些数据,这些数据将附加到 现有的 RTF 字段内容。

我们的要求是将数据作为链接返回,即锚元素,每当作者点击链接弹出页面时,必须打开并允许作者选择其他选项;单击提交按钮后,新值必须替换为旧值。

挑战是:

当前弹出页面由 javascript- 打开,它是显示 aspx 页面的入口点。作者选择数据并提交,正是这个 javascript 返回值并附加到 RTF 字段。 现在当弹出页面作为独立页面打开时,如何从中返回数据。

我们将不胜感激。

提前致谢。

【问题讨论】:

    标签: c# asp.net tridion


    【解决方案1】:

    如果只是将内容附加到 RTF 字段,那么使用自定义 URL 会不会少很多工作?

    自定义 URL 是您可以在 Schema 字段上设置的链接,该链接将在组件中显示为该字段标题上的链接。这将打开一个带有指定 URL 的弹出窗口,您可以从那里直接返回该字段(允许您添加或替换现有内容)。

    可以在http://docportal.sdl.com/sdltridion (direct topic link) 上找到有关此主题的文档

    用于将内容覆盖或附加到文本字段的自定义 URL HTML 页面示例如下所示:

    <html>
    <head>
    <title>Custom URL example</title>
    <style>
    body {
        background:#fafafa;
        font-family:arial,helvetica,sans-serif;
        font-size:12px;
        line-height:1.5em;
    }
    a {
        color:#000;
        font-weight:bold;
        text-decoration:none;
    }
    a:hover {
        color:#666;
    }
    </style>
    <script type="text/javascript" language="javascript" src="/WebUI/Core/Controls/Popup/PopupInit.js"></script>
    <script language="JavaScript">
        function overwrite(value) {
            var fields = window.dialogArguments.getFields();
            if (fields && fields.length > 0) {
                if (fields[0].getValues() != null && fields[0].getValues()[0] != null && fields[0].getValues()[0].length > 0) {
                    if (!confirm('This will overwrite the existing content of the field. Continue?')) {
                        return;
                    }
                }
                fields[0].setValues([value]);
                window.close();
            }
        }
        function append(value) {
            var fields = window.dialogArguments.getFields();
            if (fields && fields.length > 0) {
                var current = '';
                if (fields[0].getValues() != null && fields[0].getValues()[0] != null && fields[0].getValues()[0].length > 0) {
                    current = fields[0].getValues()[0];
                }
                fields[0].setValues([current + value]);
                window.close();
            }
        }
    </script>
    </head>
    <body>
        <h1>Make a choise</h1>
        <p><a href="javascript:overwrite(' - dummy content - ')">overwrite current value</a></p>
        <p><a href="javascript:append(' - dummy content - ')">append to current value</a></p>
    </body>
    </html>
    

    这是一个 HTML 页面,您应该将它放在 ..\Tridion\web 文件夹中的某个位置(我通常会在其中创建一个 CustomURL 子目录,因此您可以像这样引用它:/CustomUrl/example.html)

    【讨论】:

    • 感谢您的回复。能否请您解释一下如何使用自定义 URL 替换内容。
    • 添加了一个带有附加和覆盖选项的自定义 url html 页面示例。
    猜你喜欢
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2014-11-24
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    相关资源
    最近更新 更多