public ActionResult GridFilter(MyViewModel vm)
        {
            var result = new JsonResult();

            if (!Request.IsAjaxRequest())
            {
                result.Data = new { statuscode = "400", error = "Invalid Request" };
                return(result);
            }


            var query = GetDummy().AsQueryable();

            //generic sort
            query = SortingService.GenericSortQuery <Person>(query, vm);
            //generic sort
            if (vm.FreeText.IsNotEmpty() && vm.FreeText.ToList().Count > 4)
            {
                query = FilterService.AppendQueryWithContains <Person>("PhoneNr", vm.FreeText.ToLower(), query, vm.AsSortingFilterModel);
            }
            //generic paging
            query = FilterService.GenericPaging(query, vm.AsSortingFilterModel);

            //return data
            vm.Persons = query.ToList();

            ModelState.Clear();
            var modalViewStr = this.GetPartialViewAsStr("_Grid", vm);

            result.Data = new { statuscode = "200", data = modalViewStr };
            return(result);
        }