作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用户控件,其中包含一个文本框、一个 HtmlEditorExtender
和一个按钮。使用LoadControl()
将用户控件加载到父页面中。每当我单击按钮发布表单时,文本框中的任何格式化文本都会被编码,这不应该发生。
例如,如果我使用
加载文本控件<p>test</p>
点击按钮发布页面后,.Text
属性返回的文本为
&lt;p&gt;test&lt;/p&gt;
如果我第二次发布,它会进一步编码为:
&amp;lt;p&amp;gt;test&amp;lt;/p&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/
我是一名优秀的程序员,十分优秀!