почему бы вам не использовать нормальный флажок с jQuery-UI Сортируемый ?
<ul id="sortable" class='ckb-list'>
<li><input id="chb-1" type="checkbox" value="1"/> Checkbox 1</li>
<li><input id="chb-2" type="checkbox" value="2"/> Checkbox 2</li>
<li><input id="chb-3" type="checkbox" value="3"/> Checkbox 3</li>
<li><input id="chb-4" type="checkbox" value="4"/> Checkbox 4</li>
<li><input id="chb-5" type="checkbox" value="5"/> Checkbox 5</li>
</ul>
и затем применить
$(function() {
// sortable methods
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
// retrieve selection list
$(".btn-save").bind("click", function() {
var ids = "",
iBox = 0;
// foreach input in .ckb-list
$(".ckb-list li > input").each(function() {
if($(this).prop("checked")) {
// it checked, so, we save
ids += ++iBox + ". " + $(this).attr("id") + "\n";
}
});
alert("the checkboxes selected and sorted are:\n\n" + ids);
});
});
Живой пример в JSBIN
Вы можете легко конвертировать <input id="chb-5" type="checkbox" value="5"/> Checkbox 5
с синтаксисом бритвы:
@Html.Checkbox("chb-5", Model.CheckBox5Value)
для настойчивости все, что вам нужно сделать, это написать HTML-код в правильном порядке, давайте представим, что у вас есть эта таблица:
[TblUserOptions]
UserOption_id
Option_id
Value
Order
все, что вам нужно сделать, это:
<ul id="sortable" class='ckb-list'>
@foreach(var option in Model.TblUserOptions
.OrderBy(x => x.Order)
.ThenByDescending(x => x.Option_id))
{
<li>@Html.Checkbox("chb-" + option.Option_id, option.Value)</li>
}
</ul>
У вас всегда будут правильно отсортированы флажки при запуске, после сохранения все, что вам нужно сделать, - это перебрать все флажки и обновить новое значение Order
.