我想我已经隔离了这个问题,但我不知道如何解决它。我正在为我的 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(@"\", @"\\");
但我认为它更像是解决问题而不是真正的解决方案。请评论这是一个好主意,如果我这样离开它可能会出什么问题。