C# 显示换行符asp.net mvc razor
我使用以下命令将文本输出为C# 显示换行符asp.net mvc razor,c#,asp.net-mvc,razor,textarea,line-breaks,C#,Asp.net Mvc,Razor,Textarea,Line Breaks,我使用以下命令将文本输出为HTML元素中输入的换行符 MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine, "<br />")) MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine,“”) 有更好的方法吗 也许您可以在标记中输出文本。您的代码容易受到XSS攻击,因为它没有对文本进行HTML编码。我向
HTML元素中输入的换行符
MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine, "<br />"))
MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine,“
”)
有更好的方法吗 也许您可以在标记中输出文本。您的代码容易受到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()
还有一个更好/很棒的解决方案,它采用了: 使用此选项可以避免(XSS)漏洞
<p class="message">
@Html.Raw("<p>" + Model.Text + "</p>")
</p>
@Model.Message
使用ASP.NET MVC Razor engine就像一个魔咒。它对我有用
@MvcHtmlString.Create(Regex.Replace(Html.Encode(Model.Address), Environment.NewLine, "<br />", RegexOptions.Multiline))
”)
字符串模型。文本中有标记。这是我的解决方案
@using System.Text.RegularExpressions
希望它对某人有用。只需使用标签即可。
@Model.Post.Description
或
@Html.Raw(HttpUtility.HtmlDecode(Model.Post.Description.Replace(“\r\n”,“
”))
只需执行以下命令,因为它已启用筛选功能:
当你用空格替换换行符时,我真的看不出这个助手是如何输出任何换行符的。@Darin-我的复制/粘贴不好,updated.dup这能回答你的问题吗?事实上,这应该是公认的答案。因为op要求一个更好的方法!这是开放的XSS攻击。将alert('XSS')'
放入您的Model.Text
中,您就有了一个vuln.@trailmax然后提供一个更好的解决方案这与公认的答案有何不同?
@using System.Text.RegularExpressions
@Html.Raw(HttpUtility.HtmlDecode(Model.Post.Description.Replace("\r\n", "<br>")))