Javascript AJAX将json数据放入ASP.NET Web API方法

Javascript AJAX将json数据放入ASP.NET Web API方法,javascript,ajax,asp.net-web-api,Javascript,Ajax,Asp.net Web Api,我正在尝试将一个简单的AJAX放到我的API方法中。请求发送到API方法时没有任何错误,但未设置这两个参数。他们都是0。为什么会这样 AJAX调用: var data = { productId: 100, oldIndex: 3 }; $.ajax({ url: '/api/products/reorder', method: 'PUT',

我正在尝试将一个简单的AJAX放到我的API方法中。请求发送到API方法时没有任何错误,但未设置这两个参数。他们都是0。为什么会这样

AJAX调用:

        var data = {
            productId: 100,
            oldIndex: 3
        };

        $.ajax({
            url: '/api/products/reorder',
            method: 'PUT',
            data: JSON.stringify(data),
            contentType: 'application/json'
        });
        [HttpPut("api/products/reorder")]
        public IActionResult ReOrder([FromBody]int productId, [FromBody]int oldIndex)
        {
        }
API:

        var data = {
            productId: 100,
            oldIndex: 3
        };

        $.ajax({
            url: '/api/products/reorder',
            method: 'PUT',
            data: JSON.stringify(data),
            contentType: 'application/json'
        });
        [HttpPut("api/products/reorder")]
        public IActionResult ReOrder([FromBody]int productId, [FromBody]int oldIndex)
        {
        }

我相信你应该能够做到这一点:

    $.ajax({
        url: '/api/products/reorder/' + data.productId + '/' + data.oldIndex,
        method: 'PUT',
        contentType: 'application/json'
    });


    [HttpPut("api/products/reorder/{productId}/{oldIndex}")]
    public IActionResult ReOrder(int productId, int oldIndex)
    {
    }

如果这是一个直接的副本,你有一个在你的网址打字错误。您以单引号开始,但以双引号结束。已修复,对此表示抱歉。打字错误正如我所说的,我很好地掌握了这个方法,没有任何错误。无法通过的是参数。最多允许从消息体读取一个参数。我会删除两个[FromBody]标记。@Joe我明白了,所以我必须发送一个字符串,然后拆分它?在大多数情况下,这是一个对象,因此通常只有一个参数,但我不想在c#中为此创建匹配对象,因为它是一个临时匿名对象。我只需要把这两个值取出来。我很想把它们放在url中。WebApi应该能够解析您发送的内容,而不必使用FromBody。是的,这是有效的,我想这就是我应该做的。但是,products是一个子实体,所以我实际的web API调用是这样的:/API/productgalleries/{id}/products/reorder/{productId}/{oldIndex}或类似的东西。。。是啊,真的很酷!