Optimus
Optimus

Reputation: 2210

Passing List of objects to ASP.Net Core MVC controller using jQuery AJAX

I Know this is a repeated question but I can't find out what I'm doing wrong. Following is my code

My Model

public class DivisionDetails
    {
        public int DivisionId { get; set; }
        public string DivisionName { get; set; }
        public DateTime? UpdatedOn { get; set; }
        public string FormattedUpdatedOn
        {
            get
            {
                return GetFormattedDate();
            }
        }

        private string GetFormattedDate()
        {
            return UpdatedOn.HasValue ? UpdatedOn.Value.ToString("MM-dd-yyyy") : "";
        }
    }

my jQuery

var divisions=[];
        var item = {};

                item.DivisionName ="polo"
                item.DivisionId = 1;
                item.UpdatedOn = null;

                divisions.push(item);

   var itemTwo = {};

                item.DivisionName ="polo2"
                item.DivisionId = 2;
                item.UpdatedOn = null;

                divisions.push(itemTwo);

 var items = JSON.stringify({ "divisions":divisions });

success= function(data){
alert(data);
}

           $.ajax({
                url: "url",
                type: "POST",
                cache: false,
                data:items,
                contentType: 'application/json; charset=utf-8',
                dataType: "json",
                success: success
            });

my controller

public IActionResult Save(List<DivisionDetails> divisions)
        {
            var result = _divisionService.Save(divisions);
            return Json(result);
        }

When the call hit the controller I'm getting an empty list. Please point me to the right direction

Upvotes: 1

Views: 4131

Answers (1)

hasan
hasan

Reputation: 3502

You should use [FromBody] to get list object in controller side.

Also you fill item object twice therefore itemTwo object becomes null.

var divisions=[];

var item = {};
item.DivisionName ="polo"
item.DivisionId = 1;
item.UpdatedOn = null;

divisions.push(item);

var itemTwo = {};
itemTwo.DivisionName ="polo2"
itemTwo.DivisionId = 2;
itemTwo.UpdatedOn = null;

divisions.push(itemTwo);


public IActionResult Save([FromBody]List<DivisionDetails> divisions)
{
    var result = _divisionService.Save(divisions);
    return Json(result);
}

Upvotes: 4

Related Questions