使用AJAX将包含数组值的对象发送到MVC控制器操作。断点显示动作已到达,但接收字符串数组的对象为空。
调用Asp.net MVC Web Api使用AJAX进行。创建对象,然后使用JSON.Stringify。 MVC动作参数对象设置为从AJAX调用接收值。我已经尝试过[HttpPost]属性以及[Route(“ api / Controller”)]。我也曾尝试在javascript中将对象存储在另一个对象中。然后使用JSON.stringify,然后将其设置为ajax'data'参数。
脚本代码
//var data = {
// Apimethod: null,
// Employees: [],
// Type: null
//};
var data = [];
//var jsonData = JSON.stringify(data);
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
url: "api/{controller}/" + data.Apimethod,
data: { employees: data }
//traditional: true
}).done(function (response) {
$('#modelmsg').empty();
$('#modelmsg').append(response);
return returnguid = response;
}).fail(function (response) {
console.log('Error: ' + response);
});
WebApiConfig
config.Routes.MapHttpRoute(
name: "Name",
routeTemplate: "api/{controller}/{action}/{employees}",
defaults: new { action = "{name}", employees = RouteParameter.Optional }
);
MVC Controller
```c#
[Route("api/{controller}/{employees}")]
public IHttpActionResult InsertEmployeesIntoRDLTable(EmployeeList employees)
{
//Code Here
return Json(response);
}
类对象EmployeeList
public class EmployeeList
{
public string Apimethod { get; set; }
public string[] Employees { get; set; }
public string Type { get; set; }
}
从ajax调用产生的http链接接收到错误: 没有MediaTypeFormatter可用于从媒体类型为“ application / octet-stream”的内容中读取类型为“ String []”的对象。
总体预期结果是从AJAX呼叫接收参数。但是Object类保持为空。
更新
如下所示,抓取似乎有效。只是不确定原因。
所以我发现fetch可以完成工作。我不是100%知道为什么,但是确实如此。
fetch(url, {
method: "POST",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'credentials': 'include'
},
body: jsonData
})
.then(response => {
return response.json();
})
.then(response => {
//code
})
.catch(function (e) {
//code
});
答案 0 :(得分:0)
您不需要对数据进行分类。由于您已经提供了dataType: "json"
选项,因此可以直接提供数据。
尝试一下
data: { employees:data }
还要设置一种always
方法以进行进一步的故障排除。