我在将 JSON 对象数组传递给 ASP.Net core 3 中的 MVC Controller 时遇到问题。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; }
}
Controller :
[HttpPost]
public IActionResult Update([FromBody]MetricModel obj)
{
return Json(new { obj });
}
我认为问题可能在于我如何定义接收 JSON 的类,但我已经尝试了多种方法,例如定义 MetricBase
作为List<>
或者直接作为 MetricModel
中的数组, 但它似乎不起作用。
感谢任何帮助!
最佳答案
您通过代码在数组中添加 stringify 项
metrics.push(JSON.stringify(metric));
而不是将整个数组字符串化。将行更改为
metrics.push(metric);
和data: obj,
到
data: JSON.stringify(obj),
.
通过上述更改,$.ajax
发送整个数组。同时将操作更改为
public IActionResult Update([FromBody]IEnumerable<MetricBase> obj)
关于javascript - ASP.Net Core 3 将 JSON 数组发布到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59081880/