public JsonResult GetUsers(DataTablesRequest model)
        {
            string dataPath = ConfigurationManager.AppSettings["UsersPath"];
            var repo = new UserRepository(dataPath);
            var data = repo.GetAll().AsQueryable();
            var dataTableParser = new DataTablesParser<User>(model, data);
            var formattedList = dataTableParser.Process();

            return Json(formattedList, JsonRequestBehavior.AllowGet);
        }
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            HttpRequestBase request = controllerContext.HttpContext.Request;
            var model = new DataTablesRequest();
            if (request.QueryString.Count > 0) {
                var requestParams = request.Params;
                var properties = model.GetType().GetProperties();

                // This will loop through the primitive properties and set the values
                foreach (var property in properties) {
                    var value = property.GetValue(model, null);
                    if (property.PropertyType.IsInterface == false) {
                        var formValue = requestParams.Get(property.Name);
                        // if filtering is disabled, the sSearch and bRegex parameters will not be sent from the client.  So, we check to make sure we have a value before
                        // trying to set it in the model.
                        if (formValue != null) {
                            property.SetValue(model, Convert.ChangeType(formValue, property.PropertyType), null);
                        }
                    }
                }

                // Fill lists
                for (int i = 0; i < model.iColumns; i++) {
                    model.sSearchList.Add(requestParams.Get("sSearch_" + i));
                    model.mDataProp.Add(requestParams.Get("mDataProp_" + i));
                    model.bRegexList.Add(Convert.ToBoolean(requestParams.Get("bRegex_" + i) ?? "false"));
                    model.bSearchable.Add(Convert.ToBoolean(requestParams.Get("bSearchable_" + i) ?? "false"));
                    model.bSortable.Add(Convert.ToBoolean(requestParams.Get("bSortable_" + i) ?? "false"));
                }

                // Use iSortingCols to fill sort-related lists
                for (int i = 0; i < model.iSortingCols; i++) {
                    model.iSortCol.Add(requestParams.Get("iSortCol_" + i));
                    model.sSortDir.Add(requestParams.Get("sSortDir_" + i));
                }
            }

            return model;
        }