AngularJS SmartTable & ASP.NET 映射错误

AngularJS SmartTable & ASP.NET mapping error

我尝试从 SmartTable 完成 asp.net 当前 tableState 的映射。

我使用 ASP.NET MVC 5.

我的 angularjs 电话是这样的:

 usersService.getUsers({
                start: start,
                number: number,
                tableState: tableState
            }
        ).then(function(result) {

        });

我的 queryString 参数如下所示:

number:10
start:0
tableState:{"sort":{"predicate":"location","reverse":false},"search":{"predicateObject":{"location":"gfdgd","service":"gfdgd","company":"gd","fullname":"john"}},"pagination":{"start":0,"number":10}}

当然我会尝试在 asp.net 中映射查询信息。我的控制器操作如下所示:

   public JsonResult GetUsers(SmartTableRequestModel request)
        {
            return GetJsonResult(new
            {

            });
        }

我尝试绑定的模型如下:

 public class SmartTableRequestModel
    {
        public SmartTableQueryModel TableState { get; set; }

        public int Number { get; set; } // number is well-binded

        public int Start { get; set; } // the start is well-binded too
    }

 public class SmartTableQueryModel
    {
        [JsonProperty("sort")]
        public SmartTableSortModel Sort { get; set; }

        [JsonProperty("search")]
        public SmartTableSearchModel Search { get; set; }

        [JsonProperty("pagination")]
        public SmartTablePaginationModel Pagination { get; set; }
    }

 public class SmartTableSortModel
    {
        [JsonProperty("predicate")]
        public string Predicate { get; set; }

        [JsonProperty("reverse")]
        public bool Reverse { get; set; }

    }

等等...

但我没有在 tableState 模型中映射任何内容。我的 SmartTableRequestModel 对象中的 TableState 属性 始终为空。

感谢您的关注, 拉兹万

尝试像下面这样发送请求数据。

{"request" :{"TableState": {"sort":{"predicate":"location","reverse":false},"search":{"predicateObject":{"location":"gfdgd","service":"gfdgd","company":"gd","fullname":"john"}},"pagination":{"start":0,"number":10}}},"Number":10,"Start":1}

问题是我的 getUsers 是一个 httpget 方法,你不能将模型传递给 httpget 方法。

所以我更改了资源以匹配 httppost 调用。

    {
        getUsers: { url: ci.domainPub + '/Management/GetUsers', method: 'POST', action: 'getUsers'},
    },

并且在控制器中的动作将是:

[HttpPost]
public JsonResult GetUsers(SmartTableRequestModel request)
        {
            return GetJsonResult(new
            {

            });
        }

并且通过这种机制,您可以 post smartTable 插件的 tableState 无需任何处理,并且 filter/order 基于服务器端的 tableState。