Member 11596389 Ответов: 3

Массив Javascript для контроллера MVC


У меня есть простой массив JavaScript, который я пытаюсь передать контроллеру

function SubmitData()
{
    var operationCollection = new Array();

    var test1 = { name: "Bill", age: "55", address: "testing" };
    operationCollection.push(test1);
    var test2 = { name: "Ben", age: "55", address: "testing" };
    operationCollection.push(test2);
    var test3 = { name: "Flo", age: "55", address: "testing" };
    operationCollection.push(test3);


    var dataToPost = JSON.stringify(operationCollection);


    $.ajax({
        type: "POST",
        url: "Home/AddPerson",
        datatype: JSON,
        data: { methodParam: dataToPost },
        traditional: true

    });
}


Контроллер C# имеет класс

public class newEntry
{

    public string name { get; set; }
    public string age { get; set; }
    public string address { get; set; }

}


и метод

public void AddPerson(List<newEntry> methodParam)
{

    foreach (newEntry item in methodParam)
    {
      string name =  item.age + item.address;

    }
}


Что я уже пробовал:

When I run the code in debug, the value passed to the controller method is always NULL or 0. I can't seem to get the array to pass correctly. I have read on previous posts that traditional: true will fix this... it doesn't for me though. Has anyone any ideas?

3 Ответов

Рейтинг:
2

Suket shah

Привет,

В вашем коде замените нижеприведенную строку кода.

1)

var dataToPost = JSON.stringify({ methodParam: operationCollection });


2)
data: dataToPost,


И добавьте ниже строку, которая :

contentType: "application/json; charset=utf-8",



Это сработает идеально.


Richard Deeming

Итак, в принципе, какое именно решение предложил 2, за 2 с половиной часа до того, как вы опубликовали это?!

Рейтинг:
1

F-ES Sitecore

// use a normal array
var operationCollection = [];

var test1 = { name: "Bill", age: "55", address: "testing" };
operationCollection.push(test1);
var test2 = { name: "Ben", age: "55", address: "testing" };
operationCollection.push(test2);
var test3 = { name: "Flo", age: "55", address: "testing" };
operationCollection.push(test3);

// create a json object that has your collection as a property
// then stringify the whole object
dataToPost = JSON.stringify({ methodParam: operationCollection });

$.ajax({
    type: "POST",
    url: "/Home/AddPerson",
    contentType: "application/json; charset=utf-8", // specify the content type
    dataType: 'JSON', // make sure you use the correct case for dataType
    data: dataToPost,
    traditional: true
});


Рейтинг:
1

rah_sin

Можете ли вы попробовать ArrayList вместо List.


Member 11596389

Привет когда я изменил список на arraylist я просто получаю ноль