Обеспечение совместимости объекта List с данными публикации из внешнего интерфейса в ASP.NET MVC3 - PullRequest
2 голосов
/ 01 октября 2011

У меня есть следующий контроллер, который я отправляю в форме через AJAX:

[HttpPost]
public ActionResult Create(List<int> listOfSTuff)
{
    try
    {
        service.Create(listOfSTuff);
    }
    catch
    {
        return null;
    }
    return Json(new { gid = 7 }); // hardcoded for simplicity
}

Мне трудно с моим постом jQuery AJAX, чтобы тип данных List был совместим с данными поста. Вот мой код jQuery / JavaScript:

var listOfStuff = [1, 2, 3];

$.ajax({
    type: 'POST',
    url: '/MyController/Create',
    data: listOfStuff,
    success: function(data) {
        alert(data.gid);
    },
    error: alert(':('),
    dataType: 'json'
});

Я знаю, что сообщение AJAX на контроллере работает, потому что я получаю gid, но я не вижу элементов массива 1 или 2 или 3, сохраненных в базе данных. Похоже, что контроллеру не нравится мой массив JavaScript, который передается. Кто-нибудь может подсказать, как должна выглядеть структура данных из внешнего интерфейса, чтобы сделать ее совместимой с List, которого ожидает действие контроллера?

Ответы [ 2 ]

1 голос
/ 01 октября 2011

Сделайте так, чтобы ваш listOfStuff был объявлен так:

var listOfStuff = {postedValues: [1, 2, 3]};

Лучше отформатировать опубликованные данные как правильный объект JSON, прежде чем отправлять их в контроллер.так что теперь:

data: listOfStuff, отправит правильную строку JSON

и изменит имя параметра в вашем контроллере на:

[HttpPost] 
public ActionResult Create(List<int> postedValues) 
{ 
} 

Надеюсь, это сработает для вас.

0 голосов
/ 03 октября 2011

Оказывается, что я пропустил критический параметр в вызове jQuery AJAX, который делает эту работу:

Существует атрибут traditional, который по умолчанию false, но его необходимо установить наtrue, который использует традиционный стиль param serialization .

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