Wie stoppe ich HtmlEditorExtender, der HTML in postback kodiert?

Ich habe ein Benutzersteuerelement, das ein Textfeld enthältHtmlEditorExtenderund eine Taste. Das Benutzersteuerelement wird mit in eine übergeordnete Seite geladenLoadControl(). Jedes Mal, wenn ich auf die Schaltfläche klicke, um das Formular zu veröffentlichen, wird der formatierte Text im Textfeld codiert, was nicht passieren sollte.

Zum Beispiel, wenn ich das Text-Steuerelement mit lade

<p>test</p>

Nachdem ich auf den Button geklickt habe, um die Seite zu posten, wird der Text von der.Text Eigentum ist

<p>test</p> 

Wenn ich ein zweites Mal poste, wird es weiter codiert als:

<p>test</p> 

und so weiter.

Ich habe bestätigt, dass das Steuerelement ordnungsgemäß funktioniert (das HTML wird nicht codiert), wenn ich das Benutzersteuerelement zur Entwurfszeit zur Seite hinzufüge. Dieses Problem tritt nur auf, wenn ich verwendeLoadControl() um es zu laden.

Ich habe tagelang versucht, dieses Problem zu beheben, kann aber nicht feststellen, ob ich etwas falsch mache, ob das Steuerelement mit diesem Szenario einfach nicht kompatibel ist oder ob es eine zuverlässige Problemumgehung gibt.

Hier ist ein einfaches Beispiel:

Nutzerkontrolle:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestDynamicRichTextControl.ascx.cs" Inherits="Sample.forms.TestDynamicRichTextControl" %> 
<asp:TextBox ID="txtBody" runat="server" Columns="80" Rows="15" TextMode="MultiLine"></asp:TextBox> 
<ajaxToolkit:HtmlEditorExtender ID="heeBody" runat="server" TargetControlID="txtBody"> 
    <Toolbar> 
        <ajaxToolkit:Bold /> 
        <ajaxToolkit:Italic /> 
        <ajaxToolkit:Underline /> 
    </Toolbar> 
</ajaxToolkit:HtmlEditorExtender> 
<br /> 
<asp:Button ID="btnTestPartialPostback" runat="server" Text="Test Partial Postback" onclick="btnTestPartialPostback_Click" /> 
<asp:Label ID="lblResult" runat="server"></asp:Label> 

Benutzersteuercode (BaseUserControl erweitertSystem.Web.UI.UserControl und erklärtInitialize()):

public partial class TestDynamicRichTextControl : BaseUserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    public override void Initialize() 
    { 
        txtBody.Text = "<p>test</p>"; 
    } 

    protected void btnTestPartialPostback_Click(object sender, EventArgs e) 
    { 
        lblResult.Text = DateTime.Now.ToString(); 
    } 
} 

Die Hauptseite enthält diesen Platzhalter:

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>

Der Code der Hauptseite:

public partial class TestDynamicControl : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
        PlaceHolder1.Controls.Clear(); 
        BaseUserControl formUc = (BaseUserControl)this.LoadControl("forms/TestDynamicRichTextControl.ascx"); 
        PlaceHolder1.Controls.Add(formUc); 

        if (!IsPostBack) 
            formUc.Initialize(); 
    } 
} 

Antworten auf die Frage(4)

Ihre Antwort auf die Frage