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

Fiz*_*zix 24 html c# asp.net-mvc razor

我试图从我的模型中渲染一个地址.该字符串包含我用break标记替换的换行符.虽然,它在页面上呈现为字符串而不是HTML.如何强制我的字符串呈现为HTML?

尝试:

<span id="addressLine">
    @Model.MyData.Address.Replace("\r\n", "<br />");
</span>
Run Code Online (Sandbox Code Playgroud)

页面结果:

Address Top<br />Street Name<br />City<br />PostCode
Run Code Online (Sandbox Code Playgroud)

应显示为:

Address Top
Street Name
City
PostCode
Run Code Online (Sandbox Code Playgroud)

dom*_*dom 38

使用 @Html.Raw(Model.MyData.Address.Replace("\r\n", "<br />"))

  • 小心使用它,好像用户的地址是`1234 <script> alert('a')</ script> lane`,你会遇到xss问题 (5认同)

cno*_*nom 12

使用

@(new HtmlString(@Model.MyData.Address))
Run Code Online (Sandbox Code Playgroud)

请参阅此文章: 在Razor中将HTML呈现为HTML


小智 7

要在 blazor 上渲染 HTML,您可以使用MarkupString => @((MarkupString)here your string) 这会将字符串渲染为 HTML

<span id="addressLine">
    @((MarkupString)@Model.MyData.Address.Replace("\r\n", "<br />"));
</span>
Run Code Online (Sandbox Code Playgroud)


小智 5

使用CSS保留空白

HTML

<div id="addressLine">
  @Model.MyData.Address;
</div>
Run Code Online (Sandbox Code Playgroud)

的CSS

#addressLine {
  white-space: pre;
}
Run Code Online (Sandbox Code Playgroud)