在ASP.NET Razor中格式化字符串

时间:2010-07-27 06:59:21

标签: asp.net html string razor

我目前正在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,但我想以某种方式逃避它们以便它们可以。当然,我已经在互联网上寻找答案,但由于Razor相当新,所以没有太多可以帮助我。

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

3 个答案:

答案 0 :(得分:9)

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

Razor计划有一个帮助方法为你做这个,但是,AFAIK,它还没有,所以我相信你需要创建自己的类来实现接口并返回你的HTML GetHtmlString()方法。
编辑:您可以使用HtmlString类。

您可以将topHeader字典更改为IHtmlString而不是String,或者您可以保留代码,但将其包装在HtmlString中在Razor视图中:

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

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

答案 1 :(得分:9)

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

以下是一个例子:

@Html.Raw("Hello <a>World</a>!")

答案 2 :(得分:4)

SLaks是对的,但您不需要编写自己的IHtmlString实现,System.Web内置一个名为HtmlString的实现。所以:

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

应该做的伎俩。