9

我目前正在用 ASP.NET 编写一个小型模板系统,以允许用户添加内容。例如,用户可以输入字符串(变量类型为字符串)。

topHeader[x] = "They think it's all over. It is now!";

但是,需要进行的一项更改是能够在此内容中添加一些基本的 HTML 标记,因此可以执行以下操作

topHeader[x] = "They think it's all over. <strong>It is now!</strong>";

或者

topHeader[x] = "They think it's all over. <a title="Football News" href="URL">It is now!</a>";

如果您现在将这些内容添加到字符串中,它们不会被格式化为 HTML,但我想以某种方式转义它们以便它们可以。当然,我已经在 Internet 上寻找答案,但由于 Razor 相当新,所以没有太多可以帮助我的方法。

任何人都知道如何做到这一点?

4

3 回答 3

9

他们添加的辅助方法称为Html.Raw() ,它更干净

这是一个例子:

@Html.Raw("Hello <a>World</a>!")
于 2011-01-17T00:39:39.050 回答
9

您需要创建一个包含IHtmlString您的 HTML 源代码的实现。

Razor 计划有一个辅助方法来为您执行此操作,但是,AFAIK,它还没有,所以我相信您需要创建自己的类来实现接口并从该GetHtmlString()方法返回您的 HTML。
编辑:您可以使用该HtmlString课程。

您可以将topHeader字典更改为保存IHtmlStrings 而不是Strings,或者您可以保留代码原样,但将其包装在HtmlStringRazor 视图中:

<tag>@new HtmlString(topHeader[x])</tag>

确保正确转义任何非 HTML 特殊字符。

于 2010-07-27T07:02:57.053 回答
4

SLaks 是对的,但您不需要编写自己的实现,调用IHtmlString的内置有一个。所以:System.WebHtmlString

topHeader[x] = new HtmlString("They think it's all over. <a title=\"Football News\" href=\"URL\">It is now!</a>");

应该做的伎俩。

于 2010-07-27T15:22:52.887 回答