好吧,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?還是有一個更簡單的方法來實現這一點,我完全失蹤了?
乾杯!
好吧,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?還是有一個更簡單的方法來實現這一點,我完全失蹤了?
乾杯!
大家在使用@Html.Raw()
時是正確的,但我想指出要小心,因爲它可能使您的站點容易受到XSS漏洞的影響。
我會合並@Html.Raw(ViewBag.SomeMessage)
與Microsoft's Anti-XSS Library以確保您不會引入任何漏洞。
編輯: 防XSS庫的好處(如果你沒有看過它)是它已批准加價的白名單(如<b>
,<h3>
,等等),這樣只批准標記將被解碼。
EDIT2: 的如何做到這一點Here's an example。
@Html.Raw(ViewBag.SomeHtmlProperty)
這是說,這裏是我的聲明:請不要使用ViewBag 。使用強類型視圖和視圖模型。 ViewBag/ViewData就像一個ASP.NET MVC應用程序的癌症。
將數據放入ViewBag作爲不應再次編碼的HTML編碼字符串。
ViewBag.myBag = MvcHtmlString.Create(myCode ?? string.Empty);
然後用
@ViewBag.myBag
的documentation爲MvcHtmlString。
+1這也是一個很好的建議。 – Tejs
無恥的自我推銷是什麼xss是和使用反xss,加上其他黑客校對的東西:http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV333 –