2017-02-20 25 views
0

Я хочу создать граненый поиск сетки KendoUI. Что я хочу сделать, передать фильтр кендо в контроллер, перевести эти фильтры в sql-запрос и вернуть сгруппированные данные.Преобразование/Сериализация фильтров сетки kendo передается как строка внутри контроллера для читаемой структуры

Моего контроллер

public List<facetSearchOptionsModel> optionsCount(string filter) 
    { ... } 

В клиенте я называю это

  var deferred = $q.defer(); 
      $http({ 
       method: 'GET', 
       url: 'http://localhost:17446/api/Facet/optionsCount', 
       params: { 
        filter: filt 
       } 
      }).then(function successCallback(response) { 
       deferred.resolve(response.data); 
      }, function errorCallback(response) { }); 
      return deferred.promise; 

The KendoUI (JavaScript) объект фильтр, может иметь такую ​​структуру

{ 
logic: "and", 
filters: [ 
    { 
    logic: "or", 
    filters: [ 
     { field: "Level", operator: "eq", value: 'INFO' }, 
    ] 
    }, 
    { 
    logic: "or", 
    filters: [ 
     { field: "Logger", operator: "eq", value: 'AgentSync' }, 
    ] 
    }, 
    {field:"Message",operator:"contains",value:"fgdgfdgfd"} 
]} 

Когда я называю это в клиенте я получаю, что

например: "{\"logic\":\"and\",\"filters\":[{\"logic\":\"or\",\"filters\":[{\"field\":\"Level\",\"operator\":\"eq\",\"value\":\"INFO\"}]},{\"logic\":\"or\",\"filters\":[{\"field\":\"Logger\",\"operator\":\"eq\",\"value\":\"AgentSync\"}]},{\"field\":\"Message\",\"operator\":\"contains\",\"value\":\"fgdgfdgfd\"}]}"

Как можно десериализовать эту строку в объект, чтобы я мог сделать цикл? Или как можно перевести эту строку в sql-запрос?

Я повторяю свое «я», как можно преобразовать объект фильтра источника данных kendo из строки в считываемую структуру в клиенте, чтобы я мог принимать значения и создавать sql-запрос?

+0

Любые новости по этому поводу? – DontVoteMeDown

ответ

0

Вам нужно создать специальную ViewModel для этого, например .:

public class KendoFilterViewModel 
{ 
    public string logic { get; set; 

    public string field { get; set; } 

    public string operator { get; set; } 

    public string value { get; set; } 

    public IEnumerable<KendoFilterViewModel> filters { get; set; } 
} 

Затем контроллер подписи:

public List<facetSearchOptionsModel> optionsCount(KendoFilterViewModel filter) 

 Смежные вопросы

  • Нет связанных вопросов^_^