好的,对于ASP.Net MVC来说还是新手,所以如果这是一个愚蠢的问题我很抱歉,但我如何将ViewBag的值显示为HTML。例如,如果ViewBag.SomeMessage包含以下文本:
<h3>Test</h3><p>Test</p><p>Test</p><p>Test</p><p>Test</p><p>TEST</p>
我如何实际将页面渲染为普通HTML?还是有一种更简单的方法来实现这一点,我完全不知道了?
干杯!
答案 0 :(得分:57)
每个人在使用@Html.Raw()
时都是正确的,但我想指出要小心这一点,因为它可能会使您的网站容易受到XSS漏洞的影响。
我会将@Html.Raw(ViewBag.SomeMessage)
和Microsoft's Anti-XSS Library结合起来,以确保您不会从中引入任何漏洞。
修改:
Anti-XSS库的优势(如果您还没有看过它)是它具有已批准的标记的白名单(例如<b>
,<h3>
等),以便只有批准的标记将是未编码的。
EDIT2: Here's an example如何做到这一点。
答案 1 :(得分:17)
您可以使用Raw
方法:
@Html.Raw(ViewBag.SomeMessage)
答案 2 :(得分:8)
我认为你可以这样做:
@Html.Raw(ViewBag.SomeMessage)
答案 3 :(得分:7)
@Html.Raw(ViewBag.SomeHtmlProperty)
这就是说,这是我的免责声明:不要使用ViewBag。使用强类型视图和视图模型。 ViewBag / ViewData就像是ASP.NET MVC应用程序的癌症。
答案 4 :(得分:1)
将数据作为HTML编码的字符串放入ViewBag,不应再次编码。
ViewBag.myBag = MvcHtmlString.Create(myCode ?? string.Empty);
然后使用
@ViewBag.myBag
MvcHtmlString的documentation。