显示换行符 asp.net mvc razor
Posted
技术标签:
【中文标题】显示换行符 asp.net mvc razor【英文标题】:display line breaks asp.net mvc razor 【发布时间】:2011-07-13 16:45:17 【问题描述】:我正在使用以下内容使文本输出在<textarea>
html 元素中输入的换行符。
MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine, "<br />"))
有没有更好的方法来做到这一点?
【问题讨论】:
当您用空格替换换行符时,我真的看不出这个助手如何输出任何换行符。 @Darin - 我的复制/粘贴效果不佳,已更新。 重复***.com/questions/5032097/… 这能回答你的问题吗? Replace line break characters with <br /> in ASP.NET MVC Razor view 【参考方案1】:使用CSS white-space property 有一个更好/很棒的解决方案:
使用它可以避免Cross-site scripting (XSS) 漏洞...
<p style="white-space: pre-line">@Model.Message</p>
使用 ASP.NET MVC Razor 引擎就像一个魅力。
【讨论】:
这实际上应该是公认的答案。因为操作要求更好的方法!【参考方案2】:您的代码容易受到 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()
【讨论】:
【参考方案3】:也许您可以在
标记内输出文本。
【讨论】:
【参考方案4】:只需使用标签。
<pre>@Model.Post.Description</pre>
或者
@Html.Raw(HttpUtility.HtmlDecode(Model.Post.Description.Replace("\r\n", "<br>")))
【讨论】:
【参考方案5】:它对我有用。
<p class="message">
@Html.Raw("<p>" + Model.Text + "</p>")
</p>
字符串 Model.Text 里面有 标签。
【讨论】:
这对 XSS 攻击开放。将<script>alert('XSS')'</script>
放入您的Model.Text
中,您就有了一个漏洞。
@trailmax 然后提供更好的解决方案【参考方案6】:
这是我的解决方案。
@MvcHtmlString.Create(Regex.Replace(Html.Encode(Model.Address), Environment.NewLine, "<br />", RegexOptions.Multiline))
当然,您必须添加以下 using 语句才能使 Regex 起作用。
@using System.Text.RegularExpressions
希望它对某人有用。
【讨论】:
【参考方案7】:只需执行以下命令,因为它已启用过滤:
<p style="white-space: pre-line" <p>
【讨论】:
这个被接受的答案有什么不同?以上是关于显示换行符 asp.net mvc razor的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET MVC 4 Razor 项目的视图中显示集合?
ASP.Net MVC - Razor 按月/年列显示客户的帐户总数