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

在ASP.NET Razor中格式化字符串,asp.net,html,string,razor,Asp.net,Html,String,Razor,我目前正在ASP.NET中编写一个小型模板系统,允许用户添加内容。例如,用户可以输入字符串(变量类型为string) 但是,需要做的一个更改是能够在该内容中添加一些基本的HTML标记,因此可以执行以下操作 topHeader[x] = "They think it's all over. <strong>It is now!</strong>"; topHeader[x]=“他们认为一切都结束了。现在就结束了!”; 或 topHeader[x]=“他们认为一切都结束了

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

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

topHeader[x] = "They think it's all over. <strong>It is now!</strong>";
topHeader[x]=“他们认为一切都结束了。现在就结束了!”;

topHeader[x]=“他们认为一切都结束了。”;
如果您现在将这些内容添加到字符串中,它们的格式就不是HTML,但我想以某种方式对它们进行转义,这样它们就可以。当然,我已经在互联网上寻找答案,但由于剃须刀是相当新的,没有太多的帮助我了

有人知道怎么做吗?

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

Razor计划为您提供一个帮助器方法来完成这项工作,但目前还没有,因此我相信您需要创建自己的类来实现该接口,并从
GetHtmlString()
方法返回HTML。
编辑:您可以使用
HtmlString

您可以将
topHeader
字典更改为保留
IHtmlString
s而不是
String
s,也可以保持代码原样,但将其包装在Razor视图中的
HtmlString
中:

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

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

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>");
topHeader[x]=新的HtmlString(“他们认为一切都结束了”);

应该可以做到这一点。

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

以下是一个例子:

@Html.Raw("Hello <a>World</a>!")
@Html.Raw(“你好,世界!”)

我已经尝试过了,但是收到了“CS0029:无法将类型'System.Web.HtmlString'隐式转换为'string'”。你知道我做错了什么吗?@enderb:将字典改为包含
IHtmlString
object
。这非常有效!这比提供的其他答案更简单。
topHeader[x] = new HtmlString("They think it's all over. <a title=\"Football News\" href=\"URL\">It is now!</a>");
@Html.Raw("Hello <a>World</a>!")