首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML.Encode但保留换行符

HTML.Encode但保留换行符
EN

Stack Overflow用户
提问于 2011-04-06 09:36:35
回答 5查看 36.6K关注 0票数 44

我将用户输入放入文本区域,将其存储,并最终将其显示给用户。

在我看来(剃刀)我想做这样的事情...

代码语言:javascript
复制
@Message.Replace("\n", "</br>")

这不起作用,因为默认情况下Razor Html会进行编码。这很好,但是我想要我的线路中断。

如果我这样做,我就会遇到XSS问题。

代码语言:javascript
复制
@Html.Raw(Message.Replace("\n", "</br>"))

处理这种情况的正确方法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-06 09:43:27

使用HttpUtility.HtmlEncode,然后进行替换。

代码语言:javascript
复制
@Html.Raw(HttpUtility.HtmlEncode(Message).Replace("\n", "<br/>"))
票数 56
EN

Stack Overflow用户

发布于 2013-05-31 12:23:19

如果您发现自己不止一次地使用它,那么将其封装在自定义HtmlHelper中可能会有所帮助,如下所示:

代码语言:javascript
复制
namespace Helpers
{
    public static class ExtensionMethods
    {
        public static IHtmlString PreserveNewLines(this HtmlHelper htmlHelper, string message)
        {
            return message == null ? null : htmlHelper.Raw(htmlHelper.Encode(message).Replace("\n", "<br/>"));
        }
    }
}

然后,您将能够像这样使用您的自定义HtmlHelper:

代码语言:javascript
复制
@Html.PreserveNewLines(Message)

请记住,要使HtmlHelper可用,您需要向Helpers名称空间添加using。

票数 13
EN

Stack Overflow用户

发布于 2011-04-06 09:42:21

您可以对消息进行编码,然后将其原始显示。类似于:

代码语言:javascript
复制
@Html.Raw(Server.HtmlEncode(Message).Replace("\n", "<br/>"))
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5560585

复制
相关文章

相似问题

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