Как связать объект jQuery, содержащий строки, с List <string>? - PullRequest
2 голосов
/ 23 декабря 2011

Надеюсь, это один лайнер.

Я прочитал статью Фила Хаака http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx и другие вопросы, но это около <form> s и использование нескольких имен, а не форматирование объекта JS для запроса $.ajax().

У меня есть:

var elements$ = $('.someClass');
if(elements$.Length === 0){
    //no need for call to server if no elements on page
    return;
}

var elementsList = elements$.map(function (i, element) {
    return $(element).data('some-data-attribute');
})

var data = getOtherObjectContainingData();
//encode in a format that can be automatically bound to list
data.ListOfString = elementsList.get().serializeArray();  //THIS LINE
$.post("ControllerName/ActionName", data, handler);

с действием контроллера

public JsonResult ActionName(SomeObject OtherObject, List<string> ListOfString)

Я пробовал serialize (), serializeArray () и могу решить эту проблему с помощью строки CSV, но я не хочу с этим расспрашивать, если связыватель моделей может делать это автоматически, если запрос отформатирован правильно. *

Как правильно связать $('string', 'string', 'string')? 1018 *

Ответы [ 2 ]

3 голосов
/ 23 декабря 2011

Создать ListOfStrings как массив, а затем расширить его как объект

data.ListOfStrings = $.extend({}, ListOfStrings);

Должен сделать свое дело, но, очевидно, я не могу сказать;)

0 голосов
/ 23 декабря 2011

Вы пробовали .toArray () ?

var elementsList = elements$.map(function (i, element) {
    return $(element).data('some-data-attribute');
}).toArray();

Метод .map() возвращает массив jquery, а вызов .toArray() превращает его в чистый массив javascript.

...