HTML<;text区域>;仅发送'; ';返回服务器

本文关键字:返回 服务器 gt lt text 区域 HTML | 更新日期: 2023-09-27 18:26:41

我们的应用程序既有.NET脱机应用程序(WinForms和WPF),也有联机ASP.NET MVC。

我们的离线应用程序代表带有/r/n(回车+换行)的新线。

当我们把这些放在在线表单上,特别是文本区域上时——如果用户更改了文本区域中的任何内容,浏览器会自动从文本中删除所有/r字符。从而打破了线下同行。

奇怪的是,如果用户没有更改任何内容,回车符就会保留下来。

理想情况下,我不想逐个解决这个问题,因为这会浪费很多精力。

有没有什么方法可以使用MVC筛选器转换不存在的地方。或者,如果这不可能,我们已经在使用JSON.NET值提供程序工厂来解析这里讨论的JSON了——也许我可以在这一点上截取字符串值?

其他人对此有经验吗?我的最佳选择是什么?

HTML<;text区域>;仅发送';
';返回服务器

由于时间紧迫,我不得不快速实现一些东西,所以我在JsonNetValueProviderFactory中添加了一些东西,它只做一些Regex替换。可能不是最快的事情,但似乎能奏效。

我会暂时不回答这个问题,以防出现更好的解决方案。

private static readonly System.Text.RegularExpressions.Regex _orphanEOLChecker =
    new System.Text.RegularExpressions.Regex(@"((?<!'r)'n)|('r(?!'n))",
            System.Text.RegularExpressions.RegexOptions.Compiled &
            System.Text.RegularExpressions.RegexOptions.Multiline);
private const string _newLineReplacement = "'r'n";
private static string FixCarriageReturns(string val)
{
    if (string.IsNullOrEmpty(val))
        return val;
    return _orphanEOLChecker.Replace(val, _newLineReplacement);
}