30

好的,对于 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?还是有一种我完全想念的更简单的方法来实现这一目标?

干杯!

4

5 回答 5

62

每个人的使用都是正确的,@Html.Raw()但我想指出要小心这一点,因为它会使您的网站容易受到 XSS 漏洞的影响。

我会将它@Html.Raw(ViewBag.SomeMessage)Microsoft 的 Anti-XSS 库结合使用,以确保您不会由此引入任何漏洞。

编辑: Anti-XSS 库的优点(如果你还没有看过的话)是它有一个已批准标记的白名单(例如<b><h3>等),因此只有已批准的标记才会被未编码。

Edit2: 这是如何完成的示例

于 2011-09-02T15:38:35.673 回答
19

您将使用以下Raw方法:

 @Html.Raw(ViewBag.SomeMessage)
于 2011-09-02T15:34:35.967 回答
9

我认为你可以这样做:

@Html.Raw(ViewBag.SomeMessage)
于 2011-09-02T15:34:40.647 回答
8
@Html.Raw(ViewBag.SomeHtmlProperty)

话虽如此,这是我的免责声明:不要使用 ViewBag。使用强类型视图和视图模型。ViewBag/ViewData 就像 ASP.NET MVC 应用程序的癌症。

于 2011-09-02T15:34:50.243 回答
3

将数据作为不应再次编码的 HTML 编码字符串放入 ViewBag。

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

然后使用

@ViewBag.myBag

MvcHtmlString的文档

于 2016-12-15T13:45:52.617 回答