asp.net-mvc – 传递的JSON集合未被控制器拾取

我有以下 javascript代码段:

$.ajax({
            url: self.LoadCirculationListUrl,cache: false,async: false,dataType: 'json',contentType: 'application/json; charset=utf-8',data: [ { "ColumnName":"France","Comparitor":"=","Value":"1"},{"ColumnName":"Germany","Comparitor":">","Value":"3"}] 
        });

这是从上面的ajax调用访问的controllre:

public ActionResult LoadCirculationData(IList<CirculationListFilter> filters)
{
}

这是CirculationListFilter类

public sealed class CirculationListFilter
{
    public string ColumnName { get; set; }

    public string Comparitor { get; set; }

    public string Value { get; set; }
}

现在当我运行代码时,控制器没有传递给它的JSON集合;过滤器始终为空.但是,如果我这样做:

$.ajax({
            url: self.LoadCirculationListUrl,data: { "ColumnName":"Germany","Value":"3"}
        });

并且控制器是这样的:

public ActionResult LoadCirculationData(CirculationListFilter filters)
{
}

数据传递正常.为什么控制器无法绑定JSON项的集合?

编辑:

我更改了AJAX调用以使用它:

data: { filters: [{ "ColumnName": "France","Comparitor": "=","Value": "1" },{ "ColumnName": "Germany","Comparitor": ">","Value": "3" }]},

和ActionResult:

public ActionResult LoadCirculationData(List<CirculationListFilter> filters)

现在过滤器里面有2个项目,但是每个CirculationListFilter类在其属性中都填充了NULL数据.所以我越来越近,但实际值并没有被绑定.

解决方法

问题出在.ajax()调用中.

.ajax()不会将数据转换为JSON字符串.

它适用于一个项目的原因是因为.ajax()能够将数据转换为MVC愉快接受的查询字符串.

解决方案是首先将JSON转换为字符串:

$.ajax({
            url: self.LoadCirculationListUrl,data: JSON.stringify([ { "ColumnName":"France","Value":"3"}]) 
        });

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....