将整数数组传递给webapi方法

Muh*_*laa 6 asp.net-mvc parameter-passing model-binding asp.net-web-api

我试图传递一个int数组但我无法获得webapi方法中的值

var postData = { "deletedIds": deletedIds };

    $.ajax({
        type: "DELETE",
        traditional: true,
        dataType: 'json',
        contentType: 'application/json',
        cache: false,
        url: "/api/Management/Models",
        data: JSON.stringify(postData),
        success: ModelDeleted,
        error: ModelNotDeleted
    });
Run Code Online (Sandbox Code Playgroud)

在apiController中:

[HttpDelete]
        public bool DeleteModel(int[] deletedIds)
        {
            return modelsRepository.DeleteModels(deletedIds);
        }
Run Code Online (Sandbox Code Playgroud)

Sha*_*ank 9

你的代码看起来很不错.请定义"deletedIds"对象的结构.一个建议是使用new Array()对象初始化deletedIds属性并删除JSON.stringify().这里也有类似的问题.

编辑

Web API支持以各种方式解析内容数据,但它不处理多个发布的内容值.您的问题的解决方案可能是创建一个具有int []类型属性的ViewModel.像下面的代码,

public class SimpleViewModel
{
    public int[] deletedIds{ get; set; }
}

//Controller
[HttpDelete]
    public bool DeleteModel(SimpleViewModel deletedIds)
    {
        return modelsRepository.DeleteModels(deletedIds.deletedIds);
    }
Run Code Online (Sandbox Code Playgroud)

并将其用作参数类型.

  • 使用[FromUri]属性装饰您的动作参数.[this](http://stackoverflow.com/questions/14628576/passing-an-json-array-to-mvc-web-api-via-get)帖子可以帮到你. (2认同)