我是一名有帮助的助手,可以为您进行文本翻译。以下是需要翻译的内容:
我在ASP.Net Core 3中遇到了将JSON对象数组传递给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
定义为List<>
或直接在MetricModel
中定义为数组,但似乎不起作用。
非常感谢您的帮助!
MetricBase
的属性更改为仅字符串,然后将它们转换为相应的数据类型。这种解决方案唯一的问题是,由于某种原因,metrics.push(metric);
会为var table
中的每一行添加一个var table
最后一行的副本,但至少现在是另一个问题了,谢谢! - Gabriel Ochoa Gonzalez