[英]ASP.Net Core 3 Posting JSON array to controller
我在将 JSON 对象数组传递给 ASP.Net 核心 3 中的 MVC 控制器时遇到问题。JSON 对象是从 CSV 文件构建的,并通过 AJAX 调用传递。 调用了正确的操作,但接收到的对象始终为空。
JS:
async function updateData(){
var obj = await getData();
$.ajax({
type: "POST",
contentType: "application/json",
url: "/admin/metric/Update",
data: obj,
dataType: 'json',
success: function (data) {
console.log("SUCCESS : ", data);
},
error: function (e) {
console.log("ERROR : ", e);
}
});
}
async function getData(){
var metric = {};
var metrics = [];
var response = await fetch('https://bloburi.net/source/file.csv');
var data = await response.text();
var table = data.split('\n').slice(1);
table.forEach(row => {
var columns = row.split(',');
metric["FirstName"] = columns[0];
metric["LastName"] = columns[1];
metric["Email"] = columns[2];
metric["AverageHandleTime"] = columns[3];
metric["AverageFollowUp"] = columns[4];
metric["AverageHold"] = columns[5];
metric["Date"] = columns[6];
metrics.push(JSON.stringify(metric));
});
console.log(metrics);
return metrics;
}
楷模:
public class MetricBase
{
[Required]
public string Date { get; set; }
public double AverageHandleTime { get; set; }
public double AverageHold { get; set; }
public double AverageFollowUp { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class MetricModel
{
public IEnumerable<MetricBase> MetricBase { get; set; }
}
控制器:
[HttpPost]
public IActionResult Update([FromBody]MetricModel obj)
{
return Json(new { obj });
}
我认为问题可能在于我如何定义接收 JSON 的类,但我尝试了多种方法,例如将 MetricBase MetricBase
为List<>
或直接定义为MetricModel
的数组,但似乎没有上班。
任何帮助表示赞赏!
您通过代码在数组中添加字符串化项目
metrics.push(JSON.stringify(metric));
而不是字符串化整个数组。 将行更改为
metrics.push(metric);
和data: obj,
到
data: JSON.stringify(obj),
.
随着提到的变化, $.ajax
发送整个数组。 也将动作更改为
public IActionResult Update([FromBody]IEnumerable<MetricBase> obj)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.