这有望成为一个班轮。
我已经阅读了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')
?
答案 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数组。