工作生活

WebApi 实体集合作为参数进行Post传值问题

2019-07-03  本文已影响0人  醉酒的姑娘

实体集合作为参数传递到后台接口,后台接口一直获取不到参数

前端Ajax请求api接口

resultList作为实体集合,对应实体类为CoverIncludeDto

var resultList=[
{ImageId: "5cc0060eccb56d2448a31a21", ImageUrl: "024649695.jpg", CoverId: "5d1aee066b657c355442b227"},
{ImageId: "5cc0060eccb56d2448a31a20", ImageUrl: "023183289.jpg", CoverId: "5d1aee066b657c355442b227"},
{ImageId: "5cc0060dccb56d2448a31a1f", ImageUrl: "022852842.jpg", CoverId: "5d1aee066b657c355442b227"}]

$.ajax({
    url: apiUrl + "/api/SystemSetting/Album/AlbumInfo/AddImgToCover",
    type: "post",
    contentType: 'application/json',
    data: JSON.stringify(resultList),
    success: function (data) {
      
    }
})

实体类CoverIncludeDto

字段_id为自增列

public class CoverIncludeDto
{
    public string _id { get; set; }
    /// <summary>
    /// 专辑ID:本图片隶属哪个专辑。
    /// </summary>
    public string CoverId { get; set; }
    /// <summary>
    /// 专辑图片ID
    /// </summary>
    public string ImageId { get; set; }
    /// <summary>
    /// 专辑图片存储地址(URL)
    /// </summary>
    public string ImageUrl { get; set; }
}

后台接口接收不到前端传递的参数

参数request获取不到数据


image.png

解决方法:

1.在参数前面添加([FromBody]

    [HttpPost]
    [Route("AddImgToCover")]
    public async Task<IActionResult> AddImgToCover([FromBody]List<CoverIncludeDto> request)
    {
    }

2.直接读取请求的body,从流里面获取参数

    [HttpPost]
    [Route("AddImgToCover")]
    public async Task<IActionResult> AddImgToCover(List<CoverIncludeDto> request)
    {
        using (var reader = new System.IO.StreamReader(Request.Body))
        {
            var str = reader.ReadToEnd();

            request = Newtonsoft.Json.JsonConvert.DeserializeObject<List<CoverIncludeDto>>(str);
        }
    }
上一篇下一篇

猜你喜欢

热点阅读