Passing array of integers to webapi Method

前端 未结 3 990
攒了一身酷
攒了一身酷 2020-12-10 17:38

I am trying to pass an array of int but I can not get the value in the webapi method

var postData = { \"deletedIds\": deletedIds };

    $.ajax({
        typ         


        
相关标签:
3条回答
  • 2020-12-10 17:53

    Your code looking pretty Ok to me. Please define structure of "deletedIds" object. one suggestion is to Use new Array() object to initialize deletedIds property and remove JSON.stringify() . A similar question asked here.

    EDIT

    Web API supports parsing content data in a variety of ways, but it does not deal with multiple posted content values. A solution for your problem could be to create a ViewModel with a property of int[] type. Like code below,

    public class SimpleViewModel
    {
        public int[] deletedIds{ get; set; }
    }
    
    //Controller
    [HttpDelete]
        public bool DeleteModel(SimpleViewModel deletedIds)
        {
            return modelsRepository.DeleteModels(deletedIds.deletedIds);
        }
    

    and use it as parameter type.

    0 讨论(0)
  • 2020-12-10 17:59

    I suspect that the stringify bit is messing up your object - have you tried assigning it to a variable to see if it's the expected formatting?

    You're stringifying the whole thing at the moment:

    { "deletedIds": deletedIds }

    while what you probably want to send as post body is this:

    { "deletedIds": JSON.stringify(deletedIds) }

    0 讨论(0)
  • 2020-12-10 18:12

    At last, based on @Shashank Answer it worked and the code modified as :

    var deletedIds = new Array();
    
    deletedIds.push(modelId);
    
    var postData = { "DeletedIds": deletedIds };
    $.ajax({
        type: "Delete",
        traditional: true,
        dataType: 'json',
        cache: false,
        url: "/api/Management/Models",
        data: postData,
        success: ModelDeleted,
        error: ModelNotDeleted
    });
    

    and the apiController :

    [HttpDelete]
            public bool DeleteModels(DeleteViewModel dvm)
            {
                return modelsRepository.DeleteModels(dvm.DeletedIds);
            }
    

    and for the DeleteViewModel :

    public class DeleteViewModel
        {
            public int[] DeletedIds { get; set; }
        }
    
    0 讨论(0)
提交回复
热议问题