我正在构建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