2011-12-14 65 views
5

我有一个文本编辑器,将格式应用于文本后,单击按钮时显示文本。我希望在文本编辑器中显示所有格式的文本。如何在网站中显示文本(Html格式)(Asp.net C#)

lbl_Subject.Text = Server.HtmlEncode(formattedtext); 

但它不会显示在,而不是应用它的显示格式为

<p> This is Para 1</p> <p> this is Para 2</p> <p> <strong>this is bold</strong></p> 

我怎么可以在文本编辑器应用

更新 我尝试了所有的格式显示文本用文字

结果是

&lt;p&gt; This is Para 1&lt;/p&gt; &lt;p&gt; this is Para 2&lt;/p&gt; &lt;p&gt; &lt;strong&gt;this is bold&lt;/strong&gt;&lt;/p&gt; 

回答

8

使用div代替标签。

div1.InnerHtml=formattedtext; 
1

您可能想要使用文字控件而不是标签。这应该将您的原始HTML字符串输出并按页面上的要求输出。

ASIDE:显示HTML时要非常小心。添加恶意脚本并不难,例如,将从查看的页面运行恶意脚本。

+0

+1请指定Mode =“Encode”。 – adatapost 2011-12-14 11:17:08

6

HtmlEncode确保了文本正确地显示在浏览器和不是由浏览器HTML解释。

尝试删除HtmlEncode或使用HtmlDecode

+1

`Server.HtmlDecode(Server.HtmlEncode(formattedtext))`似乎有点傻,但也许这只是我。 – 2011-12-14 16:40:22

1

如果您希望文本在浏览器中呈现为html,那么您为什么使用HtmlEncoding呢? HtmlEncode旨在将可能包含html符号的代码编码并对其进行编码,以便将这些符号打印为原始文本。我会说你呈现的代码的行为完全像它应该预期的那样。如果你想要你的代码输出html来渲染,那么它应该是一个文字,它应该只是文本。

lit_Subject.Text = formattedtext; 
0

看看AntiXssLibrary(可以通过nuget找到)。

特别是在Sanitizer类。它需要一个字符串并从中删除与安全相关的所有内容。

它也会改变css类的名字,所以你可能需要修改结果来恢复类名。但它绝对允许您在您的页面上安全地获取RAW HTML,而无需冒着XSS攻击的风险。

0

您可以使用此代码:Html.Raw(formattedtext)