在CKEditor对话窗口中显示ASP.MVC视图

时间:2014-04-16 10:06:59

标签: asp.net-mvc asp.net-mvc-4 ckeditor

我创建了一个带有自定义对话框窗口的插件。

CKEDITOR.plugins.add('imggallery',
{
init: function (editor) {
    var pluginName = 'imggallery';
    editor.ui.addButton('Image',
        {
            label: 'Add image',
            command: 'OpenWindow',
            icon: CKEDITOR.plugins.getPath('imggallery') + 'lightbulb.gif'
        });

    editor.addCommand('OpenWindow', new CKEDITOR.dialogCommand('simpleLinkDialog'));

    var html2 = "<h1>This is a heading</h1>";

    CKEDITOR.dialog.add('simpleLinkDialog', function (editor) {
        return {
            title: 'LinkProperties',
            minWidth: 400,
            minHeight: 200,
            contents:
            [
                {
                    id: 'general',
                    label: 'Settings',
                    elements:
                    [
                        {
                            type: 'html',
                            html: html2
                        }
                    ]
                }
            ]
        };
    });
}
});

我的问题是:是否有可能以某种方式在窗口内容中显示ASP.MVC视图? 当我将html2分配给elements属性时,文本显示时没有格式化(纯文本)。

1 个答案:

答案 0 :(得分:1)

你确定它是纯文本而不是H1格式的格式看起来像纯文本吗?有一个很大的区别:)。 CKE对话框重置了大多数标准浏览器样式,使元素看起来像纯文本,即使它们不是。

对于MVC视图,我建议您在CKE对话框中添加iframe并在那里正常显示页面。然后,您可以使用JavaScript控制或获取/设置iframe中的值。这将有点棘手,但应该有效。

var html2 = '<iframe id="DialogIframe" src="/MyController/MyView?foo=bar"></iframe>';

另一种选择是使用jQuery之类的东西$.get() HTML然后使用它,如果你之前使用过ajax,应该相对简单。如果没有,这是一个很好的机会! :)