jQuery UI 的序列化方法查看元素的 ID,并创建一个序列化的哈希字符串,该字符串适合回发到您的控制器。默认情况下,您的 ID 必须采用以下格式之一:
<li id="setname=number"></li>
<li id="setname-number"></li>
<li id="setname_number"></li>
所有这些都会导致:
"setname[]=number&setname[]=number"
如果 serialize 方法返回一个空字符串,那么您要么没有正确定位可排序元素,它们还没有被 sortable() 调用初始化,或者 ID 的格式不正确。请注意,可以通过将自定义“键”、“属性”和“表达式”参数传递给序列化方法来修改 jQuery UI 序列化元素的方式:
var sortedList = $('ul.sortableList').sortable('serialize', { attribute: 'itemid', key: 'foo[]', expression: /(.+)=(.+)/ });
当然,您始终可以滚动您自己的序列化方法并手动将更新的 LI 位置传递给您的控制器:
var positions = new Array();
$sortableLis.each(function () {
var sortableId = $(this).find('input[id$=SortableID]').val();
var sortOrder = $sortableLis.index($(this));
var SortablePosition = {
ID: encodeURIComponent(sortableId),
SortOrder: sortOrder
};
positions.push(SortablePosition);
});
$.ajax({
type: 'POST',
url: '/UpdateSortablePositions',
data: "{ positions: '" + $.toJSON(positions) + "' }",
contentType: 'application/json; charset=utf-8',
dataType: 'json'
});