2011-12-14 93 views
5

我有一個文本編輯器,將格式應用於文本後,單擊按鈕時顯示文本。我希望在文本編輯器中顯示所有格式的文本。如何在網站中顯示文本(Html格式)(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; 

回答

8

使用div代替標籤。

div1.InnerHtml=formattedtext; 
1

您可能想要使用文字控件而不是標籤。這應該將您的原始HTML字符串輸出並按頁面上的要求輸出。

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

+0

+1請指定Mode =「Encode」。 – adatapost 2011-12-14 11:17:08

6

HtmlEncode確保了文本正確地顯示在瀏覽器和不是由瀏覽器HTML解釋。

嘗試刪除HtmlEncode或使用HtmlDecode

+1

`Server.HtmlDecode(Server.HtmlEncode(formattedtext))`似乎有點傻,但也許這只是我。 – 2011-12-14 16:40:22

1

如果您希望文本在瀏覽器中呈現爲html,那麼您爲什麼使用HtmlEncoding呢? HtmlEncode旨在將可能包含html符號的代碼編碼並對其進行編碼,以便將這些符號打印爲原始文本。我會說你呈現的代碼的行爲完全像它應該預期的那樣。如果你想要你的代碼輸出html來渲染,那麼它應該是一個文字,它應該只是文本。

lit_Subject.Text = formattedtext; 
0

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

特別是在Sanitizer類。它需要一個字符串並從中刪除與安全相關的所有內容。

它也會改變css類的名字,所以你可能需要修改結果來恢復類名。但它絕對允許您在您的頁面上安全地獲取RAW HTML,而無需冒着XSS攻擊的風險。

0

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