无论如何,ASP.NET Div与runat = server和InnerHtml html标签编码

时间:2012-09-13 09:00:53

标签: c# asp.net htmlgenericcontrol

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

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

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

编辑以使问题100%明确: 我需要以编程方式指定“< b> xx< / b>”到HTMLGenericControl对象并将其呈现为HTML标记而不是编码文本。会发生什么,我可以看到“< b> xx< / b>”写在屏幕上 - 不想要,我想看大胆的文字。我认为(并且在文档中描述)如果我分配给InnerHtml属性,则字符串未被编码并“按原样”显示。然而,它并没有表现出来。

2 个答案:

答案 0 :(得分:2)

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

我刚刚有类似的情况来升级CMS系统,这就是我处理它的方式。

答案 1 :(得分:0)

var sb = new StringBuilder();
editable.RenderControl(new HtmlTextWriter(new StringWriter(sb)));
stringDiv = sb.ToString();