我有一个文本编辑器,在将格式应用到文本后,我会在单击按钮时显示文本。我希望文本显示在文本编辑器中应用的所有格式。
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>
答案 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>"