微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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"}]) 
        });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐