我正在使用以下內容使文本輸出在<textarea>
HTML元素中輸入的換行符。顯示換行符asp.net mvc剃刀
MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine, "<br />"))
有沒有更好的方法來做到這一點?
我正在使用以下內容使文本輸出在<textarea>
HTML元素中輸入的換行符。顯示換行符asp.net mvc剃刀
MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine, "<br />"))
有沒有更好的方法來做到這一點?
您的代碼容易受到XSS攻擊,因爲它不會對HTML文本進行編碼。我建議你如下:
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 white-space property一個更好的/真棒的解決方案:
使用這個你避免Cross-site scripting (XSS)漏洞...
<p style="white-space: pre-line">@Model.Message</p>
W像ASP.NET MVC Razor引擎的魅力一樣。
這應該是事實上被接受的答案。因爲op要求更好的方式! – rjso
這是爲我工作。
<p class="message">
@Html.Raw("<p>" + Model.Text + "</p>")
</p>
string Model.Text裏面有< br />標籤。
這對XSS攻擊是開放的。將''放入你'Model.Text'中,你有一個漏洞。 – trailmax
這是我的解決方案。
@MvcHtmlString.Create(Regex.Replace(Html.Encode(Model.Address), Environment.NewLine, "<br />", RegexOptions.Multiline))
當然,您將不得不添加以下使用正則表達式工作的語句。
@using System.Text.RegularExpressions
希望它對某人有用。
我真的不知道這個幫助器如何輸出任何換行符,因爲您正在用空格替換換行符。 –
@Darin - 我的部分副本/粘貼很差,已更新。 – raklos
dup http://stackoverflow.com/questions/5032097/asp-net-mvc-convert-n-new-line-to-html-breaks – BlackTigerX