次のコードを使用して、<textarea>
HTML要素に入力された改行をテキスト出力にします。
MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine, "<br />"))
これを行うより良い方法はありますか?
コードはテキストをHTMLエンコードしないため、XSS攻撃に対して脆弱です。以下をお勧めします。
var result = string.Join(
"<br/>",
Model.Post.Description
.Split(new[] { Environment.NewLine }, StringSplitOptions.None)
.Select(x => HttpUtility.HtmlEncode(x))
);
return MvcHtmlString.Create(result);
そしてあなたの見解ではあなたは安全にできる:
@Html.SomeHelper()
CSSホワイトスペースプロパティ を使用する、より良い/素晴らしいソリューションがあります。
これを使用すると、 クロスサイトスクリプティング (XSS)の脆弱性を回避できます...
<p style="white-space: pre-line">@Model.Message</p>
ASP.NET MVC Razorエンジンでチャームのように動作します。
<pre>タグ内のテキストを出力できるかもしれません。
タグを使用するだけです。 <pre>@Model.Post.Description</pre>
または
@Html.Raw(HttpUtility.HtmlDecode(Model.Post.Description.Replace("\r\n", "<br>")))
これが私の解決策です。
@MvcHtmlString.Create(Regex.Replace(Html.Encode(Model.Address), Environment.NewLine, "<br />", RegexOptions.Multiline))
そしてもちろん、Regexを機能させるには、次のusingステートメントを追加する必要があります。
@using System.Text.RegularExpressions
それが誰かのために役立つことを願っています。
それは私のために働いています。
<p class="message">
@Html.Raw("<p>" + Model.Text + "</p>")
</p>
内部に<br />タグを含む文字列Model.Text。