簡體   English   中英

如何在網站中顯示文本(Html 格式)(Asp.net C#)

[英]How to display a text (Html format) in a website (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;

使用 div 而不是標簽。

div1.InnerHtml=formattedtext;

HtmlEncode確保文本在瀏覽器中正確顯示,而不是被瀏覽器解釋為 HTML

嘗試刪除 HtmlEncode 或使用HtmlDecode

如果您希望文本在瀏覽器中呈現為 html,那么您為什么要對它進行 HtmlEncoding? HtmlEncode 旨在獲取其中可能包含 html 符號的代碼並對其進行編碼,以便這些符號打印為原始文本。 我會說您提供的代碼的行為完全符合預期的行為。 如果您希望您的代碼輸出要呈現的 html,那么它應該帶有文字,並且應該只是文本。

lit_Subject.Text = formattedtext;

您可能希望使用文字控件而不是標簽。 這應該采用您的原始 HTML 字符串並根據需要在頁面上輸出它。

旁白:像這樣顯示 HTML 時要非常非常小心。 例如,添加惡意腳本並不困難,這些腳本將從查看的頁面運行。

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

另一種方法是添加pre標簽。 這看起來像,

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

如果標簽不起作用,請將其更改為div

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

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

尤其是在消毒劑課上。 它需要一個字符串並從中刪除所有與安全相關的內容。

它也會更改 css 類的名稱,因此您可能需要修改結果以恢復類名稱。 但它絕對允許您在頁面上安全地獲取 RAW HTML,而不會冒 XSS 攻擊的風險。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM