gpt4 book ai didi

asp.net - 如何在回发中停止 HtmlEditorExtender 编码 html?

转载 作者:行者123 更新时间:2023-12-02 14:03:17 25 4
gpt4 key购买 nike

我有一个用户控件,其中包含一个文本框、一个 HtmlEditorExtender 和一个按钮。使用LoadControl() 将用户控件加载到父页面中。每当我单击按钮发布表单时,文本框中的任何格式化文本都会被编码,这不应该发生。

<小时/>

例如,如果我使用

加载文本控件
&lt;p&gt;test&lt;/p&gt;

点击按钮发布页面后,.Text属性返回的文本为

&amp;lt;p&amp;gt;test&amp;lt;/p&amp;gt; 

如果我第二次发布,它会进一步编码为:

&amp;amp;lt;p&amp;amp;gt;test&amp;amp;lt;/p&amp;amp;gt; 

等等。

<小时/>

我确认,如果我在设计时将用户控件添加到页面,该控件可以正常工作(不会对 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();
}
}

最佳答案

this question 的回复似乎是一个不错的解决方法。当您从编辑器中取出文本时,使用 HtmlDecode 对其进行转换:

    String fixedText = HttpUtility.HtmlDecode(txtBody.Text);

我也会将其发布到您的 Codeplex 案例中。 (我认为这是你的。)

关于asp.net - 如何在回发中停止 HtmlEditorExtender 编码 html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com