2011-09-02 34 views
24

好吧,ASP.Net MVC很新,所以我很抱歉,如果這是一個愚蠢的問題,但我該如何展示一個ViewBag的值爲HTML。例如,如果ViewBag.SomeMessage包含以下文本:如何顯示一個viewbag爲html?

<h3>Test</h3><p>Test</p><p>Test</p><p>Test</p><p>Test</p><p>TEST</p>

我怎麼會去真正具有頁面呈現,作爲普通的HTML?還是有一個更簡單的方法來實現這一點,我完全失蹤了?

乾杯!

回答

47

大家在使用@Html.Raw()時是正確的,但我想指出要小心,因爲它可能使您的站點容易受到XSS漏洞的影響。

我會合並@Html.Raw(ViewBag.SomeMessage)Microsoft's Anti-XSS Library以確保您不會引入任何漏洞。

編輯: 防XSS庫的好處(如果你沒有看過它)是它已批准加價的白名單(如<b><h3>,等等),這樣只批准標記將被解碼。

EDIT2: 的如何做到這一點Here's an example

+0

+1這也是一個很好的建議。 – Tejs

+0

無恥的自我推銷是什麼xss是和使用反xss,加上其他黑客校對的東西:http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV333 –

12

您將使用Raw方法:

@Html.Raw(ViewBag.SomeMessage) 
+0

該死的你!哈哈哈 – slandau

+2

回覆贊贊:)哈哈 – slandau

7

我認爲你可以做這樣的事情:

@Html.Raw(ViewBag.SomeMessage) 
+0

+1 - NEMESIS! = D我只是快速畫麥格勞今天我猜= D – Tejs

6
@Html.Raw(ViewBag.SomeHtmlProperty) 

這是說,這裏是我的聲明:請不要使用ViewBag 。使用強類型視圖和視圖模型。 ViewBag/ViewData就像一個ASP.NET MVC應用程序的癌症。

1

將數據放入ViewBag作爲不應再次編碼的HTML編碼字符串。

ViewBag.myBag = MvcHtmlString.Create(myCode ?? string.Empty); 

然後用

@ViewBag.myBag 

documentation爲MvcHtmlString。