尝试使用以下代码时出现错误:
filters.Filters = JsonConvert.DeserializeObject<List<SearchFilterItem>>(customFilterString);
SearchFilterItem是以下类:
public Guid Id { get; set; }
public string ColumnName { get; set; }
public string ColumnDisplayName { get; set; }
public SearchColumnTypes ColumnType { get; set; } //Character, Numeric, Boolean, Date, DateTime.
public SearchOperators Operator { get; set; }
public string Value { get; set; }
public string DisplayValue { get; set; }
public string Logic { get; set; } //And / Or
我正在尝试从JavaScript发送以下内容:
if ($.isNumeric($scope.type)) {
filter = {
columnDisplayName: 'Type Id',
columnName: 'LTypeId',
columnType: parseInt('1'),
value: $scope.type.toString(),
displayValue: $scope.type.toString(),
strOperator: 'Equals', Logic: "AND"
};
所以,我的问题是如何正确发送C#枚举类型的columnType?
我在运行时遇到此错误:
“无法将System.Int64强制转换或转换为Siriusware.Models.Messages.SearchColumnTypes。”} System.Exception {System.ArgumentException
我该怎么办?
答案 0 :(得分:4)
Newtonsoft.Json中有一个StringEnumConverter属性,它具有确切的用途。 您可以在此处查看相关文档:
https://www.newtonsoft.com/json/help/html/t_newtonsoft_json_converters_stringenumconverter.htm
这是一篇博客文章,提供了有关该主题的有趣输入,例如自定义转换器:
答案 1 :(得分:0)
原来是我自己的愚蠢错误。在filterItem类中,列类型是另一个类。在该类中,我们还有一个ColumnType属性,它是一个枚举。因此,一旦我将JavaScript更改为使用columnType:{ColumnType:'Numeric'},它就可以独立工作-无需进行其他更改。我确实要求我的同事也帮我,我们花了大约一个小时或更长时间来追逐它,直到它终于在我身上消失。