2

我对 HtmlGenericControl 对象的 InnerHTML 属性有疑问。我认为如果我将“<b>xx</b>”分配给 InnerText 属性,它将被编码 - 确实如此 - 如果我将相同的字符串分配给 InnerHtml 它不会被编码 - 但确实如此!我很困惑,因为它违背了我在其他帖子中看到的内容。

背景:我分配的字符串是从数据库加载的,并在其生命周期内分配给各种其他字符串,然后最终用 Replace 方法替换占位符。它仍然包含“<b>xx</b>”而不是编码版本......为了绝对确定我绕过了整个过程并直接在后面的代码中分配了“<b>xx</b>”字符串 - 结果仍然保持不变(即编码)。

有人可以解释为什么会这样吗?我做错了什么?谢谢。

编辑以使问题 100% 清楚: 我需要以编程方式将“<b>xx</b>”分配给 HTMLGenericControl 对象,并将其呈现为 HTML 标记而不是编码文本。发生的情况是我可以看到屏幕上写着“<b>xx</b>” - 不需要,我想看到粗体文本。我认为(并且在文档中对此进行了描述),如果我分配给 InnerHtml 属性,则字符串不会被编码并“按原样”显示。然而,它的行为并非如此。

4

2 回答 2

2

如果在您的情况下用 ASP:Literal 控件替换 HTMLGenericControl 是可行的,我会这样做。

我刚刚遇到了类似的情况,升级了一个 CMS 系统,这就是我处理它的方式。

于 2012-09-13T14:37:07.807 回答
0
var sb = new StringBuilder();
editable.RenderControl(new HtmlTextWriter(new StringWriter(sb)));
stringDiv = sb.ToString();
于 2014-10-22T13:55:54.430 回答