如何将viewbag显示为html?

时间:2011-09-02 15:32:52

标签: c# asp.net asp.net-mvc-3 viewbag

好的,对于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?还是有一种更简单的方法来实现这一点,我完全不知道了?

干杯!

5 个答案:

答案 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