質問: ASP.NET Core 3.1 MVCでWebアプリケーションを作成していますが、 textarea内の改行が2倍になってしまう問題を解決したいと考えています。 Microsoft Edgeにて、textareaの中に改行を含んだ文字列を入力してPostし、このデータをDBに保存します。 (Postされたデータの改行コードは `\r\n`(CrLf) となっています) これを再度textarea内に表示する際、Razorではこのように書いています。 ``` ``` すると、表示される文字列(アスキーコード以外)はエンコードされた状態となります。 このとき、改行コードも` `とエンコードされているのですが、 これをEdgeで表示すると改行2つになります。 これを正しく改行1つにする方法はないでしょうか? Microsoft Edge 44.18362.449.0 Microsoft EdgeHTML 18.18363 例えば ``` a bc d ``` といった文字列は`a bc d`とエンコードされます。 尚、Google Chromeでは問題なく表示されることは確認しています。 DB保存する際に改行コードを `\n(Lf)` のみにすれば問題ないのは確認済みですが、 さすがにこのような特殊な対応は取りたくないのが本音です。
回答: HTMLに` `を入れるのは規格違反です。本来はサーバサイドで`\r`を除去するようなんとかすべきです。 ASP.NET MVC は触ったことがないのでサーバサイドの対処はわかりません。 規格違反とはいえ、クライアントサイドで対処するなら、 ``` ``` というように、一度別の値で上書きしてから元の値をセットすると解消するようです。 DOM上では`\r`はまったく見えないので、「`value`から`\r`を消す」というアプローチはできません。 > > 特殊な対応は取りたくないのが本音です。 > > > でしたら、何もしないのがお勧めです。Chromium 版 Edge になったら解消するでしょうから。