web-dev-qa-db-ja.com

C#Razorで文字列をHTMLとしてレンダリングする

モデルから住所をレンダリングしようとしています。文字列には、breakタグで置き換えている改行が含まれています。ただし、ページ上では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
24
Fizzix

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

36
dom

使用する

@(new HtmlString(@Model.MyData.Address))

この投稿を参照してください: HTMLをRazorでHTMLとしてレンダリング

12
cnom

Cssを使用して空白を保持します

HTML

<div id="addressLine">
  @Model.MyData.Address;
</div>

Css

#addressLine {
  white-space: pre;
}
5
user3559349

代わりにCSSの空白プロパティを使用する必要があります。詳細については、 http://www.w3schools.com/cssref/pr_text_white-space.asp にアクセスしてください

また、クロスサイトスクリプティングの回避にも役立ちます( http://en.wikipedia.org/wiki/Cross-site_scripting

1
Thiago