当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET MVC Html.Encode - 新行

如何解决《ASP.NETMVCHtml.Encode-新行》经验,为你挑选了3个好方法。

Html.Encode似乎只是简单地调用HttpUtility.HtmlEncode用它们的转义序列替换几个html特定字符.

但是,这并未考虑如何解释新行和多个空格(标记空白).因此,我为用户提供了一个文本区域,用于输入纯文本信息块,然后在另一个屏幕上显示该数据(使用Html.Encode),新的行和间距将不会被保留.

我认为有两种选择,但也许有人会建议更好.

一种选择是只编写一个使用HtmlEncode的静态方法,然后将结果字符串中的新行替换
为多个空格的组和 

另一种选择是white-space: pre在我的样式表中弄乱属性 - 但是我不确定当Html帮助方法包含新行和Tab键以使页面源非常漂亮时是否会产生副作用.

是否有第三个选项,如全局标志,事件或方法覆盖,我可以用来改变html编码的方式而不必重做html帮助器方法?



1> Brannon..:

HtmlEncode仅用于编码以HTML格式显示的字符.它特别不编码空白字符.

我会选择你的第一个选项,并使其成为HtmlHelper的扩展方法.就像是:

public static string HtmlEncode(this HtmlHelper htmlHelper,
                                string text, 
                                bool preserveWhitespace)
{
    // ...
}

您可以使用String.Replace()编码换行符和空格(或者Regex.Replace如果您需要更好的匹配).



2> Alex..:

使用为我工作.根据这篇文章.



3> 小智..:

如果您使用剃刀,您可以:

@MvcHtmlString.Create(Html.Encode(strToEncode).Replace(Environment.NewLine, "
"))

在您的视图中,或在您的控制器中:

HttpServerUtility httpUtil = new HttpServerUtility();
MvcHtmlString encoded = httpUtil.HtmlEncode(strToEncode).Replace(Environment.NewLine, "
");

我没有测试控制器方法,但它应该以相同的方式工作.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有