2013-04-03 40 views
0

我正在構建一個DotNetNuke模塊,我需要包含html編輯器。然而,我的模塊是一個獨立的解決方案,xcopy對我的DNN安裝(我正在關注用於製作模塊的Visual Studio項目模板)。所有我見過的文本編輯器,像這樣引用示例代碼:從DNN解決方案引用DNN編輯器

<%@ Register TagPrefix="dnn" TagName="TextEditor" Src="~/controls/TextEditor.ascx" %> 

<dnn:TextEditor ID="txtDescription" runat="server" Width="100%" Height="300px" /> 

的問題是,由於這些模塊被DNN以外的發達,參考文本編輯顯然打破了構建。

B計劃是通過佔位符控制動態實例化編輯器,像這樣:

EditorProvider editorProvider = new EditorProvider(); 
var control = editorProvider.HtmlEditorControl; 

control.ID = "txtDescription"; 
phEditor.Controls.Add(control); 

這類作品,但大部分工具欄按鈕都搞砸了!

DNN Editor bug

任何幫助將不勝感激!

回答

1

在一些髒話和headbanging後,我發現只是實例化usercontrol而不是編輯器服務器控件的簡單答案。

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

我假設您正在開發一個用於dotnetnuke的自定義模塊,您可以查看codeplex.com上blog module源代碼的示例實現。 EditEntry.ascx是包含相同示例的控件。

基本上,你只需要參考DotNetNuke.dll and DotNetNuke.WebControls.dll使其在ascx聲明內工作。

0

http://www.dnnsoftware.com/forums/forumid/203/postid/466819/scope/posts 從斯托伊奇Evtimov找到一個更好的答案。

他的方法允許您將屬性添加到文本編輯器。

他的代碼:

一種方式來做到這一點是這樣的:

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