¿Cómo detengo la codificación htmlEditorExtender html en la devolución de datos?

Tengo un control de usuario que contiene un cuadro de texto, unHtmlEditorExtender, y un botón. El control de usuario se carga en una página principal utilizandoLoadControl(). Cada vez que hago clic en el botón para publicar el formulario, cualquier texto con formato en el cuadro de texto se codifica, lo cual no es lo que debería suceder.

Por ejemplo, si carga el control de texto con

<p>test</p>

después de hacer clic en el botón para publicar la página, el texto devuelto por el.Text la propiedad es

<p>test</p> 

Si publico una segunda vez, se codifica adicionalmente como:

<p>test</p> 

y así.

Confirmé que el control funciona bien (no codifica el HTML) si agrego el control de usuario en el momento del diseño a la página. Este problema solo ocurre si usoLoadControl() para cargarlo.

He pasado días tratando de resolver este problema, pero simplemente no puedo decir si estoy haciendo algo mal, si el control es simplemente incompatible con este escenario, o si hay una solución confiable.

Aquí hay un ejemplo simple:

Control de usuario:

<%@ 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> 

Código de control de usuario (BaseUserControl se extiendeSystem.Web.UI.UserControl y declaraInitialize()):

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(); 
    } 
} 

La página principal contiene este marcador de posición:

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

El código de la página principal:

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(); 
    } 
} 

Respuestas a la pregunta(4)

Su respuesta a la pregunta