public ActionResult List(DataSourceRequest command, string searchValues, IEnumerable <Sort> sort = null) { var model = _httpContext.Session[SessionKey.CraftSearchModel] as SearchModel; if (model == null) { model = BuildSearchModel(); } else { model.ClearValues(); } //validate var errorFilters = model.Validate(searchValues); foreach (var filter in errorFilters) { ModelState.AddModelError(filter.Name, _localizationService.GetResource(filter.ResourceKey + ".Required")); } if (ModelState.IsValid) { //session update model.Update(searchValues); _httpContext.Session[SessionKey.CraftSearchModel] = model; PagedResult <Craft> data = _craftService.GetCrafts(model.ToExpression(), model.ToParameters(), command.Page - 1, command.PageSize, sort); var gridModel = new DataSourceResult { Data = data.Result.Select(x => x.ToModel()), Total = data.TotalCount }; return(new JsonResult { Data = gridModel }); } return(Json(new { Errors = ModelState.SerializeErrors() })); }