如何将包含字符串的jQuery对象绑定到List <string>?</string>

时间:2011-12-23 10:20:04

标签: c# javascript jquery asp.net-mvc model-binding

这有望成为一个班轮。

我已经阅读了Phil Haack的文章http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx以及其他问题,但这些问题与<form>有关并且使用多个名称,而不是为$.ajax()请求格式化JS对象。< / p>

我有:

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字符串来解决这个问题,但是如果模型Binder可以在请求格式正确的情况下自动执行,我不想对它进行解决。

如何正确绑定$('string', 'string', 'string')

2 个答案:

答案 0 :(得分:3)

将ListOfStrings创建为数组,然后将其扩展为对象

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

应该这样做,但显然我无法说出来;)

答案 1 :(得分:0)

您是否尝试过.toArray()

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

.map()方法返回一个jquery数组,调用.toArray()将其转换为纯javascript数组。