在C#Razor中将字符串呈现为HTML

在C#Razor中将字符串呈现为HTML,c#,html,asp.net-mvc,razor,C#,Html,Asp.net Mvc,Razor,我正试图从我的模型中呈现一个地址。该字符串包含我要用中断标记替换的换行符。不过,它在页面上呈现为字符串,而不是HTML。如何强制将字符串呈现为HTML格式 尝试: <span id="addressLine"> @Model.MyData.Address.Replace("\r\n", "<br />"); </span> Address Top<br />Street Name<br />City<br />Po

我正试图从我的模型中呈现一个地址。该字符串包含我要用中断标记替换的换行符。不过,它在页面上呈现为字符串,而不是HTML。如何强制将字符串呈现为HTML格式

尝试:

<span id="addressLine">
    @Model.MyData.Address.Replace("\r\n", "<br />");
</span>
Address Top<br />Street Name<br />City<br />PostCode
Address Top
Street Name
City
PostCode

使用css保留空白

Html


使用
@Html.Raw(Model.MyData.Address.Replace(“\r\n”和“
”)

您应该使用CSS空白属性而不是它。 有关更多详细信息,请访问

它还可以帮助您避免使用跨站点脚本()

@(new HtmlString(@Model.MyData.Address))
它更安全,因此您可以避免潜在的xss攻击

见此帖:

你应该分开字符串。@DanielA.White-对不起,伙计,第一天用C#。所以我应该拆分它并将其保存为不同的变量,并在不同的行上呈现它们?使用
@Html.Raw(Model.MyData.Address.Replace(“\r\n”,“
”)
@Dom-Cheers,效果很好。作为答案发布。

内部
?畏缩!使用时要小心,就像用户的地址是1234警报(“a”)车道一样,您将拥有xssproblems@JohnKoerner-别担心,在将地址保存到数据库之前,我们会清除所有内容并格式化地址。谢谢你的提醒,这已经不是最好的答案了。下面的几个答案使用CSS/HTML策略,避免使用
HTML.Raw
。换行符的问题是CSS/HTML,现代浏览器可以控制(使用CSS/HTML)以实现您的预期行为。您也可以使用默认情况下具有此空白行为的
标记。例如,
Model.MyData.Address
。看见另外,您不应该使用
HtmlRaw
,这仅在Model.MyData.Address包含要包含在输出中而不转义的文本HTML时使用。这个答案也更好,因为您不再需要使用
HTML.Raw
。它如何避免潜在的xss攻击?它只是一个围绕字符串的包装器,用于指示在视图上使用时不应对内容进行编码,因此任何不受信任的内容都将显示为与Html.Raw相同的内容。
#addressLine {
  white-space: pre;
}
@(new HtmlString(@Model.MyData.Address))