加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 10:01:32 所属栏目:asp.Net 来源:网络整理
导读:我有以下 javascript代码段: $.ajax({ url: self.LoadCirculationListUrl,cache: false,async: false,dataType: 'json',contentType: 'application/json; charset=utf-8',data: [ { "ColumnName":"France","Comparitor":"=","Value":"1"},{"ColumnName":"Ge
我有以下 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"}]) 
        });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读