Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#webapi未接收到JS数组_C#_.net_Ajax - Fatal编程技术网

c#webapi未接收到JS数组

c#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

我有一个testjs函数,它应该通过post方法将数据发布到webapi

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
}