[英]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>
如何使用文本編輯器中應用的所有格式顯示文本
更新我嘗試用文字
結果是
<p> This is Para 1</p> <p> this is Para 2</p> <p> <strong>this is bold</strong></p>
使用 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.