Я пытаюсь создать свой проект net core 3.0 web api, но последние 4 дня придерживался заявления. Здесь моя проблема. У меня есть модель фильтрации под названием «GridFilter», эта модель выглядит следующим образом:
public class GridFilter
{
public string Operator { get; set; }
public string Field { get; set; }
public object Value { get; set; }
public object Value2 { get; set; }
public string Logic { get; set; }
}
в этой модели я сохраняю Value и Value2 в качестве объекта, прежде чем фильтровать любую модель, я преобразую эти значения в связанный тип столбца с помощью Универсальный конвертер типов . Я использовал эту систему в .netfreamwork, работая довольно хорошо. Но в. net core 3.0, когда я сделал запрос, эта модель заполнилась следующим образом: Модель
Operator: "eq"
Logic: null
Value: ValueKind = Number : "10000"
Value2: null
Field: "SCT_CATEGORY"
Запрос: {"filter": {"filters": [{"field": "SCT_CATEGORY", "value": 10000, "operator": "eq"}]}}
Я искал прямо 4 дней и не могу это исправить. Я пытаюсь заполнить его так:
Operator: "eq"
Logic: null
Value: 10000
Value2: null
Field: "SCT_CATEGORY"
Как я могу решить эту проблему. Спасибо!
РЕДАКТИРОВАТЬ
[Route("[action]")]
[HttpPost]
public async Task<Response> List([FromBody]GridFilter request)
Мой ConfigureServices, как это:
services.AddControllers()
.AddJsonOptions(o =>
{
o.JsonSerializerOptions.PropertyNamingPolicy = null;
o.JsonSerializerOptions.DictionaryKeyPolicy = null;
});
и в этом фрагменте я собираю мой фильтр для беглого nhibarte
internal static MyCriteria BuildFilter(ISession sess, GridFilter gf)
{
MyCriteria mc = null;
var t = !string.IsNullOrEmpty(gf.Field)
? TypeHelper.GetType(typeof(T).GetProperty(gf.Field))
: null;
if (t == typeof(char) && (!new[] { "eq", "neq" }.Contains(gf.Operator)))
{
gf.Operator = "eq";
}
switch (gf.Operator)
{
case "eq":
mc = gf.Value == null ? new MyCriteria { cr = Restrictions.IsNotNull(gf.Field), logic = gf.Logic.ToEnum(Logic.and) } : new MyCriteria { cr = Restrictions.Eq(gf.Field, ChangeType(gf.Value, t)), logic = gf.Logic.ToEnum(Logic.and) };
break;...
И мой тип изменения метнулся следующим образом:
internal static object ChangeType(object value, Type conversionType)
{
try
{
object result;
UniversalTypeConverter.TryConvert(value, conversionType, out result);
return result;
}
catch (Exception)
{
return false;
}
}
На данный момент мне нужно конвертировать "10000"
не ValueKind = Number : "10000"