c#webapi未接收到JS数组
我有一个testjs函数,它应该通过post方法将数据发布到webapic#webapi未接收到JS数组,c#,.net,ajax,C#,.net,Ajax,我有一个testjs函数,它应该通过post方法将数据发布到webapi function test() { var puffs = []; var puffObject = { id: "2735943", priority: "1" }; puffs.push(puffObject); puffs.push(puffObject); var dto = { po: puffs
function test() {
var puffs = [];
var puffObject = {
id: "2735943",
priority: "1"
};
puffs.push(puffObject);
puffs.push(puffObject);
var dto =
{
po: puffs
};
$.ajax({
type: "POST",
url: "../api/PuffPriority/",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(dto),
dataType: "json",
success: function (data, status) {
if (data) {
console.log("Welcome");
} else {
console.log("No data");
}
},
error: function (error) {
console.log("Error");
}
});
}
在控制器类中,我有
public void Post(PuffPriority[] po){
//Do something here with po, but po is always empty
}
优先级模型在哪里
public class PuffPriority
{
public string id { get; set; }
public string priority { get; set; }
}
我不知道出了什么问题,值是由JS发送的,但api控制器无法获取它:(请帮助,我已经浪费了很多时间。您的代码中有一个bug。 简单地改变
url: "../api/PuffPriority/"
到
或者将方法名称从Post更改为PUFFORITY
public void Post(PuffPriority[] po){
//Do something here with po, but po is always empty
}
到
[FromBody]列表采购订单{
//在这里对po做点什么,但po总是空的
}
实际的发布正文是什么?Web服务或您发布到的任何东西是否配置为接收json?默认情况下并非如此。请尝试使用C方法中的列表,因为您在代码中推送了两次该数组,从而发送了一个对象数组。我在C中使用对象的方式是在ajax=数据中指定:{po:JSON.Stringify(dto)}
这样告诉你要把po参数发送到C#,如果不起作用,试着用一个列表而不是一个数组。假设你的控制器在/Controllers/PuffPriorityController.cs中,把你的链接改为url:/api/PuffPriority“
或url:@url.Action(“PuffPriority”,“api”)”,
并尝试将定义更改为public void Post([FromBody]PuffPriority[]po){
您的控制器方法实际被调用了吗?在WebAPI中,它应该是“/api/PuffPriority”假设它名为PuffPriorityController
,并且位于基本控制器
目录中,很抱歉此功能起作用。不过还是要感谢您的帮助。
public void Post(PuffPriority[] po){
//Do something here with po, but po is always empty
}
[FromBody]List<PuffPriority> po{
//Do something here with po, but po is always empty
}