将字符串数组作为参数传递给asp.net mvc webapi方法

时间:2014-02-06 09:26:33

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-web-api-routing

我正在使用webapi2,这是我的客户端代码

var tbody = $('#files-table').find('tbody'); // tbody where all rows exists 
        var sortOrder = $(tbody).sortable('toArray').toString(); // geting ids of all rows 
        var updateSortOrder = $.ajax({
            url: baseUrl + 'mycontroller/updateimagesorder',
            dataType: 'json',
            traditional: true,
            contentType: 'application/json',
            data: JSON.stringify({ "sortOrder": sortOrder.split(',') }),
            type: 'PUT'
        });
        updateSortOrder.done(function (result) {
            closeModel('images-model');
        });

这是我的服务器端方法

[Route("updateimagesorder")]
    public HttpResponseMessage PutImagesSortOrder([FromBody]string[] sortOrder) 
    {
       // do stuff with parameters 
     }

注意: / mycontroller 是此处的路由前缀,baseUrl是我的域名网址

那么,我的代码中的问题是什么?

1 个答案:

答案 0 :(得分:3)

尝试传递这样的值:

data: JSON.stringify(sortOrder.split(',')),

这样您的请求有效负载看起来像一个字符串数组:

["foo", "bar"]

如果你想传递这样的值:

data: JSON.stringify({ "sortOrder": sortOrder.split(',') }),

然后确保您已声明了一个视图模型:

public class MyViewModel
{
    public string[] SortOrder { get; set; }
}

您的控制器操作将作为参数:

[Route("updateimagesorder")]
public HttpResponseMessage PutImagesSortOrder(MyViewModel model) 
{
    // do stuff with parameters 
}