如何在网站上显示文本(Html格式)(Asp.net C#)

时间:2011-12-14 11:14:31

标签: c# asp.net html text-editor

我有一个文本编辑器,在将格式应用到文本后,我会在单击按钮时显示文本。我希望文本显示在文本编辑器中应用的所有格式。

 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;

7 个答案:

答案 0 :(得分:8)

使用div而不是label。

div1.InnerHtml=formattedtext;

答案 1 :(得分:6)

HtmlEncode确保在浏览器中正确显示文字,并且不会被浏览器解释为HTML

尝试删除HtmlEncode或使用HtmlDecode

答案 2 :(得分:1)

您可能希望使用Literal Control而不是标签。这应该采用原始HTML字符串并根据页面上的要求输出。

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

答案 3 :(得分:1)

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

lit_Subject.Text = formattedtext;

答案 4 :(得分:0)

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

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

它也会更改css类的名称,因此您可能需要修改结果,以恢复类名。但它绝对允许您在页面上安全地获取RAW HTML,而不会冒XSS攻击。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

另一种方法是添加pre标签。 看起来像

 lbl_Subject.Text = $"<pre>{formattedtext}</pre>"

如果标签不起作用,请将其更改为div

div_Subject.InnerHtml =  $"<pre>{formattedtext}</pre>"