【问题标题】:Ajax POST array in JSON to API in C#JSON中的Ajax POST数组到C#中的API
【发布时间】:2019-05-03 09:21:19
【问题描述】:

我想将 JSON 字符串中的数组发送到 API,然后处理数据。尽管创建了一个类并试图让它映射它,但我还是把它当作null

这是我的 AJAX 调用(部分):

var ids = {
  rateplanIds: ['100', '200', '300']
};
$.ajax({
  url: g_appVirtualPath + "ApiFile.mvc/CheckMBB/",
  async: false,
  global: false,
  type: "POST",
  data: {
  ids: JSON.stringify(ids)
  }
})

这是我的 API(部分):

        public class RateplanIds
        {
            [DataMember]
            public string[] rateplanIds { get; set; }


        }


        [AcceptVerbs(HttpVerbs.Post), Authorize]
        public JsonResult CheckMBB(RateplanIds ids) //ids = null
        {

        }

【问题讨论】:

  • 为您的 ajax 请求添加 contentType:"application/json"
  • @vikscool 我在同一个项目的其他 AJAX 调用中添加了 dataType: "json"
  • 然后@FotisPapadamis 尝试将您的data 更改为@Narendran 提到的内容。
  • @vikscool 在更改data 之后ids 仍然是null,但它与类相关联。以前只是null
  • 为什么不把string[]作为控制器的参数

标签: c# asp.net .net ajax model-view-controller


【解决方案1】:

使用这个:

    [AcceptVerbs(HttpVerbs.Post), Authorize]
    public JsonResult CheckMBB([FromBody]RateplanIds ids) //ids = null
    {

    }

代替:

    [AcceptVerbs(HttpVerbs.Post), Authorize]
    public JsonResult CheckMBB(RateplanIds ids) //ids = null
    {

    }

【讨论】:

    【解决方案2】:

    问题是您的数据周围有很多外壳。 AJAX 请求的 data 属性只需为 data: JSON.stringify(ids)

    注意每个{}都是一个新的Object

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 2012-05-30
      • 2021-02-09
      相关资源
      最近更新 更多