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

本文关键字:显示 文本 格式 Html net 网站 Asp | 更新日期: 2023-09-27 18:18:01

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

 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;

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

使用div代替label。

div1.InnerHtml=formattedtext;

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

尝试删除htmlcode或使用HtmlDecode.

如果您希望文本在浏览器中呈现为html,那么为什么要使用html编码呢?HtmlEncode的目的是采取代码,可能有html符号在它和编码,使这些符号打印为原始文本。我想说,您提供的代码的行为完全符合预期的行为。如果你想让你的代码输出html来呈现,那么它应该是一个文字,它应该是简单的文本。

lit_Subject.Text = formattedtext;

您可能希望使用文字控件而不是标签。这将获取原始HTML字符串,并根据需要在页面上输出它。

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

看看antixslibrary(可以通过nuget找到)

尤其是在消毒课上。它获取一个字符串,并从其中删除所有与安全相关的内容。

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

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

另一种方法是添加pre标记。它看起来像,

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

如果标签不工作,将其更改为div

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