2

我想我已经隔离了这个问题,但我不知道如何解决它。我正在为我的 jQuery 网格实现过滤器,当我将过滤器数据传递给服务器时,我得到了这个unrecognized escape sequence错误。

这是我发送到服务器的数据:

[{"field":"Code","op":"na","data":""},
{"field":"UserId","op":"na","data":"Name\Jim"},
{"field":"Name","op":"na","data":""}]

在我发送之前我没有收到这个错误,我{"field":"UserId","op":"na","data":"Name\Jim"},认为唯一可能导致此类问题的字符是"Name\Jim".

我在这里遇到了这个错误:

if (!string.IsNullOrWhiteSpace(request["filters"]))
{
      string jsonString = request["filters"];
      filter.Rules = new JavaScriptSerializer().Deserialize<FilterRule[]>(jsonString);
}

更确切地说,从这里 - filter.Rules = new JavaScriptSerializer().Deserialize<FilterRule[]>(jsonString);

我想我必须以某种方式逃避这个斜线。我想知道在哪里做它的正确位置,如果这是当然的问题,是否可以在反序列化期间在服务器端做它?

附言

这是我准备过滤器数据的 jQuery 部分:

filter.push({ field: 'UserId', op: 'na', data: $('#cboFilterUser').val() });

也许我可以在这里逃脱?

PS PS

好的,我找到了一些现在可行的解决方案:

 if (!string.IsNullOrWhiteSpace(request["filters"]))
            {
                string jsonString = request["filters"];
                jsonString = jsonString.Replace(@"\", @"\\");
                filter.Rules = new JavaScriptSerializer().Deserialize<FilterRule[]>(jsonString);
            }

这部分:jsonString = jsonString.Replace(@"\", @"\\");但我认为它更像是解决问题而不是真正的解决方案。请评论这是一个好主意,如果我这样离开它可能会出什么问题。

4

0 回答 0