从外部引用DNN编辑器的DNN解决方案



我正在构建DotNetNuke模块,我需要包括html编辑器。然而,我的模块是在一个独立的解决方案,xcopy的我的DNN安装(我遵循Visual Studio项目模板制作模块)。我看到的所有示例代码都引用了文本编辑器,如下所示:

<%@ Register TagPrefix="dnn" TagName="TextEditor" Src="~/controls/TextEditor.ascx" %>
<dnn:TextEditor ID="txtDescription" runat="server" Width="100%" Height="300px" />

问题是,由于模块是在DNN之外开发的,对TextEditor的引用显然破坏了构建。

方案B是通过一个占位符控件动态实例化编辑器,如下所示:

EditorProvider editorProvider = new EditorProvider();
var control = editorProvider.HtmlEditorControl;
control.ID = "txtDescription";
phEditor.Controls.Add(control);

这种工作,但大多数工具栏按钮是混乱的!

DNN编辑器bug

任何帮助都将非常感激!

经过一番咒骂和折腾之后,我找到了简单的答案,即只实例化usercontrol而不是编辑器服务器控件。

var control = this.LoadControl("~/controls/TextEditor.ascx");
control.ID = "txtDescription";
phEditor.Controls.Add(control);

我假设您正在为dotnetnuke开发一个自定义模块,您可以在codeplex.com上查看博客模块源代码中的示例实现。EditEntry。Ascx是包含相同示例的控件。

基本上,你只需要引用DotNetNuke.dll and DotNetNuke.WebControls.dll,使其在ascx声明中工作。

在http://www.dnnsoftware.com/forums/forumid/203/postid/466819/scope/posts找到了更好的答案

他的方法允许您向Text编辑器添加属性。

他的代码:

一种方法是这样做:

    DotNetNuke.UI.UserControls.TextEditor editor = (DotNetNuke.UI.UserControls.TextEditor)LoadControl("~/controls/texteditor.ascx");       
editor.ID = "Editor1";
this.Controls.Add(editor);

我的代码在VB。NET是这样出来的:

    Dim txtDescription As DotNetNuke.UI.UserControls.TextEditor = DirectCast(LoadControl("~/controls/texteditor.ascx"), DotNetNuke.UI.UserControls.TextEditor)
        txtDescription.ID = "txtAOneDescription" & intControlCounter.ToString
        txtDescription.HtmlEncode = False

最新更新