2011-03-29 106 views
1

我使用這顯示在我看來,一些內容:<%= Html.Encode(Model.synopsis) %>ASP.NET MVC HTML逃生

內容簡介有HTML字符轉義因此,例如存儲在數據庫中像這樣的一些內容將如下所示:

&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure 
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit 
anim id est laborum.&lt;/p&gt; 

如何更改我的代碼以將其顯示爲HTML?所以轉義的HTML在前端變成了HTML。

謝謝。

+0

既然你已經HTML編碼的HTML在數據庫中,你需要顯示它之前,對其進行解碼。但是在數據庫中沒有HTML編碼的HTML會更容易。 :)(「HTML編碼」的意思是「編碼包含在HTML中」 - 在將數據存儲到數據庫時不需要這樣做)。 – bzlm 2011-03-29 19:29:48

回答

3

是否<%= Html.HtmlDecode(Model.synopsis) %>做的伎倆,你的情況?

這裏是參考MSDN中的實際功能 - http://msdn.microsoft.com/en-us/library/hwzhtkke.aspx

+0

解碼不起作用。我正在使用MVC 1 – Cameron 2011-03-29 19:26:20

+1

在這種情況下,請嘗試執行Server.HTMLDecode。附:我還在編輯答案中的方法名稱,因爲我有一個錯字。 – Naraen 2011-03-29 19:27:55

+0

'<%= Server.HtmlDecode(Model.synopsis)%>':) – Cameron 2011-03-29 19:29:43

7

請勿使用Html.Encode。只要做

<%= Model.synopsis %> 

Html.Encode對任何特殊的html字符進行編碼並轉義它們。您可能需要小心,並確保您沒有打開自己的XSS允許用戶輸入任何標記,將由瀏覽器執行。

也爲你想你的輸出編碼的時候,你可以只使用<%:標籤

<%: Model.synopsis %> 

相當於

<%= Html.Encode(Model.synopsis) %> 
+0

儘管如此,現在我看到代碼,而不是將它製作成實際的HTML! – Cameron 2011-03-29 19:19:04

+0

@cameron,我很困惑,那你試圖達到什麼目的? – Vadim 2011-03-29 19:20:41

+0

你在OP上面看到的是我的數據庫中存儲的內容。當我在視圖中顯示它時,它顯示它像'<p>某些文字... </p >'但是當刪除編碼時,它顯示它像'

文本...

'所以它不會將轉義的HTML轉換爲查看HTML時。 – Cameron 2011-03-29 19:23:59