javascript - 使用 $.post 将 javascript 数组传递给 c# 数组/列表,而不将数据类型指定为 json
问题描述
我有一个用javascript创建的模型如下
function Vehicle() {
this.type = 'Vehicle';
this.data = {
VehicleKey: null
}
};
我在 c# 中创建了一个类似的模型,如下所示
public class Vehicle
{
public string VehicleKey { get; set; }
}
现在我正在构建一个VehicleKeys
javascript数组,如下所示
function GetVehicleDetails(inputarray) {
var vehicleKeys = [];
for (var i = 0; i < inputarray.length; i++) {
var vehicleObject = new Vehicle();
vehicleObject.data.VehicleKey = inputarray[i].VehicleKey ? inputarray[i].VehicleKey : null;
vehicleKey.push(vehicleObject.data);
}
return vehicleKeys ;
}
我打电话$.post(url, data)
如下
var objectToSend = GetVehicleDetails(selectedVehicles);
var data = JSON.stringify({
'vehicles': objectToSend
});
$.post(url, data)
.done(function (result) {
if (result) {
download(result, 'VehicleReport.xlsx', { type: 'application/octet-stream' });
console.log("Report created successfully");
}
else {
console.log("Error creating report");
}
}).fail(function (error) {
console.log("Error creating report.");
});
MVC 控制器有一种方法可以接受来自 javascriptVehicles
的多个VehicleKeys
public byte[] CreateVehicleReport(List<Vehicle> vehicles)
{
//Generation of report and pass it back to javascript
}
在这里,我可以将 javascript 中的数据作为 10 和 11 提交,Vehicles
但是当它捕获 c# 时,计数为 0。
任何帮助将不胜感激。
解决方案
$.post 未发布 Content-Type json 数据,因此您需要使用 $.ajax
function GetVehicleDetails(inputarray) {
var vehicleKeys = [];
for (var i = 0; i < inputarray.length; i++) {
var vehicleObject = {}; // Set Object
vehicleObject.VehicleKey = inputarray[i].VehicleKey ? inputarray[i].VehicleKey : null;
vehicleKeys.push(vehicleObject);
}
return vehicleKeys;
}
var objectToSend = GetVehicleDetails(selectedVehicles);
$.ajax({ type: 'POST',
url: url,
data: JSON.stringify(objectToSend),
contentType: "application/json",
dataType: 'json',
success: function (data) {
alert('data: ' + data);
},
}).done(function () {
if (result) {
console.log("Report created successfully");
}
else {
console.log("Error creating report");
}
}).fail(function () {
console.log("Error creating report.");
});
C# 方法
[HttpPost("CreateVehicleReport")]
public byte[] CreateVehicleReport([FromBody]List<Vehicle> vehicles)
{
return null;
//Generation of report and pass it back to javascript
}
推荐阅读
- excel - 每次提交 Microsoft 表单时触发宏
- r - R 正值的滚动计数
- django - 在 AWS ElasticBeanstalk 中阻止 Apache 中的无效 HTTP_HOST 标头
- python - 如何在 Python 中创建自定义数字类
- javascript - 禁用列表和复选框之间的交互
- arrays - Python:在满足条件时查找二维数组中值的行索引
- unity3d - 如何添加事件触发监听器(回调)
- postgresql - PostgreSQL 在 NULL 字段上导入 CSV 失败
- database - Mongodb 在搜索日期范围时在“$lte”(查询或聚合)上有一个错误
- c# - HttpContext 中的 Azure B2C React(前端)+ .net 核心(后端)用户/身份/声明为空