c# - ASP.NET MVC Html.Encode - 新行

标签 c# asp.net-mvc newline html-encode

Html.Encode似乎只是调用HttpUtility.HtmlEncode用转义序列替换一些 html 特定字符。

然而,这并没有考虑如何解释新行和多个空格(标记空白)。所以我为用户提供了一个文本区域来输入纯文本信息 block ,然后在另一个屏幕上显示该数据(使用 Html.Encode ),新行和间距将不会保留。

我认为有 2 个选项,但也许有人可以建议更好的第 3 个选项。

一个选择是只编写一个使用 HtmlEncode 的静态方法,然后用 <br> 替换结果字符串中的新行。和多个空间组 &nbsp;

另一种选择是乱用 white-space: pre我的样式表中的属性 - 但是我不确定当 Html 帮助器方法包括换行和制表符以使页面源代码漂亮时这是否会产生副作用。

是否有第三种选择,如全局标志、事件或方法覆盖,我可以使用它来更改 html 编码的完成方式,而无需重做 html 辅助方法?

最佳答案

HtmlEncode 仅用于编码字符以在 HTML 中显示。它特别不对空白字符进行编码。

我会选择您的第一个选项,并将其作为 HtmlHelper 的扩展方法。像这样的东西:

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

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

关于c# - ASP.NET MVC Html.Encode - 新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/524528/

相关文章:

c# - 调整网络高质量图像的大小

asp.net-mvc - 从 ASP.NET MVC 1 迁移到 ASP.NET MVC 2 后的 PathTooLongException

asp.net-mvc - ActionResult 重定向使用 ToString() 呈现

php - 正则表达式替换中的换行符

javascript - 如何删除XML文件中的LF以接收一行xml文件?

javascript - 带有换行符的标签 href 数据

c# - 如何在UWP中获取当前的ProcessID?

c# - 是否可以对哈希表进行排序?

c# - 有条件地指定 nuget 包版本

asp.net-mvc - ASP.net mvc 页脚常用数据