Help us understand the problem. What is going on with this article?

【C#】Html.Rawで<br>だけそのままにする。【Razor】

改行文字を<br >に変換するだけでは改行されない。

安直に改行文字の\rや\nを<br >に置換すればいいと思うが、実はRazorではバインドした段階で値がHTMLエンコードされる。
よって表示時には& lt;br & gt;に変換されてしまう。

強制エンコードされてしまう以上、タグを埋め込むのは不可能なのでエンコードせずに出力してみる。

View
@Html.Raw(sample.text)

@Html.Rowメソッドを使うと、Htmlエンコードされずにそのままの値をHTMLに出力してくれる。
出力される値が固定の場合はこの方法で問題ないが、任意に変更できる場合はクロスサイトスクリプティングの危険がある。
よってこの方法は用途によっては使えない。

なんか楽しかったので2種類のパターンを考えた

その1、エンコードして改行だけデコードする。

1度エンコードして、改行文字のとこだけデコードを行う。
その値をHtml.Raw()で出力すれば<br >だけそのまま出力されるので改行される。

View
   @Html.Raw(Html.Encode(tmp.Detail).Replace("&#xD;&#xA;", "<br>"))

その2、ゴリ押し

View
    var detail = tmp.Detail.Split("\r\n");
    @foreach (string tmp in detail)
    {
        @tmp<br />
    }

これで改行ごとに<br >が挿入されるので改行できる。
HTMLエンコードなにそれ?って人はこっちでいいと思います。

その1をStaticメソッドにしとくといいかも!?

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away