实体集合作为参数传递到后台接口,后台接口一直获取不到参数
前端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);
}
}
网友评论