Как мне остановить HtmlEditorExtender кодирования HTML в обратной передаче?

У меня есть пользовательский элемент управления, который содержит текстовое поле,HtmlEditorExtenderи кнопка. Пользовательский элемент управления загружается на родительскую страницу с помощьюLoadControl(), Всякий раз, когда я нажимаю на кнопку, чтобы опубликовать форму, любой форматированный текст в текстовом поле кодируется, что не должно происходить.

Например, если я загружаю текстовый элемент управления с

<p>test</p>

после того, как я нажму на кнопку, чтобы опубликовать страницу, текст, возвращенный.Text свойство

<p>test</p> 

Если я публикую второй раз, он будет закодирован как:

<p>test</p> 

и так далее.

Я подтвердил, что элемент управления работает нормально (не кодирует HTML), если я добавляю пользовательский элемент управления во время разработки на страницу. Эта проблема возникает только если я используюLoadControl() загрузить его.

Я потратил несколько дней, пытаясь решить эту проблему, но я просто не могу сказать, делаю ли я что-то не так, элемент управления просто несовместим с этим сценарием или существует надежный обходной путь.

Вот простой пример:

Пользовательский контроль:

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

Код контроля пользователя (BaseUserControl продолжаетсяSystem.Web.UI.UserControl и заявляетInitialize()):

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

Главная страница содержит этот заполнитель:

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

Код главной страницы:

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

Ответы на вопрос(4)

Ваш ответ на вопрос