显示换行符 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】:

只需使用标签。 &lt;pre&gt;@Model.Post.Description&lt;/pre&gt;

或者

@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 攻击开放。将&lt;script&gt;alert('XSS')'&lt;/script&gt; 放入您的Model.Text 中,您就有了一个漏洞。 @trailmax 然后提供更好的解决方案【参考方案6】:

这是我的解决方案。

@MvcHtmlString.Create(Regex.Replace(Html.Encode(Model.Address), Environment.NewLine, "<br />", RegexOptions.Multiline))

当然,您必须添加以下 using 语句才能使 Regex 起作用。

@using System.Text.RegularExpressions

希望它对某人有用。

【讨论】:

【参考方案7】:

只需执行以下命令,因为它已启用过滤:

&lt;p style="white-space: pre-line" &lt;p&gt;

【讨论】:

这个被接受的答案有什么不同?

以上是关于显示换行符 asp.net mvc razor的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 4 Razor 项目的视图中显示集合?

ASP.Net MVC - Razor 按月/年列显示客户的帐户总数

如何使用 jquery 或 ajax 在 c#/asp.net 中为 MVC 项目更新 razor 部分视图

ASP.NET MVC Razor

ASP.NET MVC4 Razor

Razor 页面简化了 ASP.NET MVC 应用程序