0

DotNetNuke モジュールを作成していて、html エディターを含める必要があります。ただし、私のモジュールは、私の DNN インストールに xcopy するスタンドアロン ソリューションにあります (モジュールを作成するための 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 エディタのバグ

どんな助けでも大歓迎です!

4

3 に答える 3

1

罵倒とヘディングの後で、エディター サーバー コントロールの代わりにユーザー コントロールをインスタンス化するという簡単な答えを見つけました。

var control = this.LoadControl("~/controls/TextEditor.ascx");
control.ID = "txtDescription";
phEditor.Controls.Add(control);
于 2013-04-03T18:37:11.470 に答える
0

Hristo Evtimovのhttp://www.dnnsoftware.com/forums/forumid/203/postid/466819/scope/postsで、より良い回答が見つかりました。

彼の方法では、テキスト エディタに属性を追加できます。

彼のコード:

それを行う1つの方法は次のとおりです。

    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
于 2013-07-22T13:45:01.570 に答える