【问题标题】:pass string array as parameter to asp.net mvc webapi method将字符串数组作为参数传递给 asp.net mvc webapi 方法
【发布时间】:2014-03-03 03:34:31
【问题描述】:

我正在使用 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 是我的域 url

那么,我的代码有什么问题?

【问题讨论】:

  • 您面临的问题是什么?有什么错误吗?有什么意外行为吗?

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


【解决方案1】:

尝试像这样传递值:

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 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 2022-01-14
    • 2013-07-20
    • 1970-01-01
    • 2012-07-26
    • 2020-03-16
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多