2012-02-12 96 views
2

我試圖解碼我在我的MVC 3 Razor應用程序中的數據庫中的html文本。 數據庫中的html文本未被編碼。 我嘗試httpUtility.decode,server.decode但他們都不工作。 最後我設法使之與非工作代碼Html.raw(string)HTML解碼和編碼

樣品工作

@Server.HtmlDecode(item.ShortDescription) 
@HttpUtility.HtmlDecode(item.ShortDescription) 

你知道我們爲什麼不能在我的情況下使用html.decode!

我認爲這樣可以節省一些人從尋找幾個小時。

+0

你想解碼什麼樣的編碼?示例輸入和期望的輸出可能會使您的問題更清晰。 – Quentin 2012-02-12 10:27:58

回答

2

如果你想要顯示的值,是沒有任何HTML編碼你可以使用Html.Raw幫手:

@Html.Raw(item.ShortDescription) 

被警告認爲,通過這樣做,你要打開你的網站XSS攻擊等等你應該非常小心這個ShortDescription屬性包含的HTML。如果是用戶輸入它,你應該絕對確保它是安全的。你可以使用AntiXss library這個。

你知道我們爲什麼不能在我的情況下使用html.decode!

因爲Html.Decode返回一個字符串,當你給一個字符串@()剃刀自動開啓它的Html重新將它編碼和廢墟你以前的努力。這就是爲什麼Html.Raw助手存在。

5

它可以很好地解碼文本,但當使用@語法將其放入頁面時,它會自動再次編碼。

Html.Raw方法將字符串包裝在HtmlString中,該標記告訴剃鬚刀引擎在放入頁面時不對其進行編碼。