HTML <textarea>仅发送&#39; \ n&#39;回到服务器</textarea>

时间:2014-10-16 12:38:47

标签: c# asp.net asp.net-mvc json

我们的应用程序同时具有.NET脱机应用程序(WinForms和WPF)以及在线ASP.NET MVC。

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

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

奇怪的是,如果用户没有改变任何东西,则保留回车。

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

有什么方法可以使用MVC过滤器转换\ n =&gt; \ r \ n其中\ r \ n不存在。或者,如果这不可能,我们已经使用JSON.NET值提供程序工厂来解析JSON as discussed here - 也许我此时可以截取字符串值?

有没有其他人有过这方面的经验,我最好的选择是什么?

1 个答案:

答案 0 :(得分:2)

由于时间很短,我必须快速实施某些内容,因此我已将某些内容添加到JsonNetValueProviderFactory中,而这些内容只是替换了一些正则表达式。可能不是最快的事情,但似乎可以做到这一点。

为了防止出现更好的解决方案,我暂时不予回答。

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);
}