首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >显示换行asp.net mvc剃刀

显示换行asp.net mvc剃刀
EN

Stack Overflow用户
提问于 2011-03-12 02:10:29
回答 7查看 35K关注 0票数 30

我使用下面的代码使文本输出在<textarea> HTML元素中输入的换行符。

代码语言:javascript
复制
MvcHtmlString.Create(Model.Post.Description.Replace(Environment.NewLine, "<br />"))

有没有更好的方法呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-01-11 10:02:00

还有一个更好/更棒的解决方案,它采用了CSS white-space property

使用它,您可以避免Cross-site scripting (XSS)漏洞...

代码语言:javascript
复制
<p style="white-space: pre-line">@Model.Message</p>

与ASP.NET MVC剃刀引擎一起工作就像一个护身符。

票数 95
EN

Stack Overflow用户

发布于 2011-03-12 02:17:22

您的代码很容易受到XSS攻击,因为它不会对文本进行HTML编码。我会向你推荐以下几点:

代码语言:javascript
复制
var result = string.Join(
    "<br/>",
    Model.Post.Description
        .Split(new[] { Environment.NewLine }, StringSplitOptions.None)
        .Select(x => HttpUtility.HtmlEncode(x))
);
return MvcHtmlString.Create(result);

然后在您的视图中,您可以安全地:

代码语言:javascript
复制
@Html.SomeHelper()
票数 23
EN

Stack Overflow用户

发布于 2011-03-12 02:13:20

也许您可以输出标记内的文本。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5276688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档