Html.Encode
似乎只是调用HttpUtility.HtmlEncode
用转义序列替换一些 html 特定字符。
然而,这并没有考虑如何解释新行和多个空格(标记空白)。所以我为用户提供了一个文本区域来输入纯文本信息 block ,然后在另一个屏幕上显示该数据(使用 Html.Encode
),新行和间距将不会保留。
我认为有 2 个选项,但也许有人可以建议更好的第 3 个选项。
一个选择是只编写一个使用 HtmlEncode 的静态方法,然后用 <br>
替换结果字符串中的新行。和多个空间组
另一种选择是乱用 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/