jQuery UI のserializeメソッドは、要素の ID を調べて、コントローラーへのポストバックに適したシリアル化されたハッシュ文字列を作成します。デフォルトでは、ID は次のいずれかの形式である必要があります。
<li id="setname=number"></li>
<li id="setname-number"></li>
<li id="setname_number"></li>
これらはすべて、次の結果になります。
"setname[]=number&setname[]=number"
serialize メソッドが空の文字列を返す場合は、ソート可能な要素を正しくターゲットにしていないか、sortable() 呼び出しでまだ初期化されていないか、ID の形式が正しくありません。カスタムの「キー」、「属性」、および「式」パラメーターを serialize メソッドに渡すことで、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'
});