如何在网站(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>
如何使用文本编辑器中应用的所有格式显示文本
更新我试着用字面意思
结果是
<p> This is Para 1</p> <p> this is Para 2</p> <p> <strong>this is bold</strong></p>
使用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>"