Попытка передать коллекцию объектов с клиента на сервер в ASP.NET MVC 3 - PullRequest
0 голосов
/ 10 января 2012

Я пытаюсь передать коллекцию объектов в контроллер, используя $ .post ();Когда я вызываю AddNewPerson (), коллекция друзей на стороне C # содержит правильное количество объектов, но все свойства пустые.

Javascript:

function AddNewPerson(newPerson) {
    $.post("/Person/AddPerson/",
    {
        PersonName: newPerson.PersonName,
        PersonAge: newPerson.PersonAge,
        Friends:FriendList
    },
    function (JsonResponse) {
    });
}

C #

public JsonResult AddPerson(Person newPerson)
{
    Database.Add(newPerson);
}

Friends - это коллекция Person

Javascript

function Person(Name, Age) {
    this.PersonName=Name; 
    this.Person.Age=Age; 
    this.FriendList=new Array();
}

C #

public class Person() 
{
    public Person()
    {
    }

    public string PersonName{get;set;}
    public string PersonAge{get;set;}
    public Person[] Friends { get; set; }
}

1 Ответ

1 голос
/ 10 января 2012

Вы можете использовать JSON-запрос, когда хотите отправить сложные структуры, например:

var request = {
    personName: newPerson.PersonName,
    personAge: newPerson.PersonAge,
    friends: FriendList
};
$.ajax({
    // TODO: use a helper here, never hardcode urls
    url: '/Person/AddPerson/', 
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(request),
    success: function(result) {

    }
});

Из вашего примера не совсем понятно, как вы заполняете переменную FriendList, которую вы используете, ноЯ думаю, это что-то вроде этого:

var friendList = new Array();
friendList.push({
    personName: 'john',
    personAge: 'smith'
});

Показанный здесь метод JSON.stringify изначально встроен в современные браузеры, но если вы хотите поддерживать устаревшие браузеры, вам нужно будет включить json2.js скрипт на вашу страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...