Zaimplementowałem JQuery do sortowania i działa dobrze. Problem polega na tym, że nie mogę przekazać listy w nowej kolejności do kontrolera, więc mogę go zapisać.Saving JQuery Sortable (nowa kolejność) do kontrolera ASP.Net MVC?
<script type="text/javascript">
$(document).ready(function() {
$("#sortable").sortable({ axis: "y" });
});
$(function() {
$("#submit-list").button();
$("#submit-list").click(function() {
debugger;
$.ajax({
url: '/Admin/SortedLists/',
data: { items: $("#sortable").sortable('toArray') },
type: 'post',
traditional: true
});
});
});
</script>
<h2>Edit Roles</h2>
<div>
<ul id="sortable">
<% foreach (var item in Model.Roles) { %>
<li>
<%=Html.AttributeEncode(item.Name)%>
</li>
<% } %>
</ul>
<input type="submit" value="Save" id="submit-list"/>
</div>
i mój kontroler:
[HttpPost]
public EmptyResult SortedLists(List<string> items)
{
return new EmptyResult();
}
Elementy list wraca z numerem corrent elementów - z wyjątkiem każdej pozycji są puste ciągi.
Jeśli oryginalna lista wygląda następująco
- 1 - Car
- 2 - Boat
- 3 - Motocykl
- 4 - Plane
I użytkownik przeciągnie i ośrodków być
- 4 - Plane
- 1 - Car
- 3 - Motocykl
- 2 - Boat
Jak mogę przekazać, że nowy porządek? Przypuszczam, że id przekazuje całość na przesłaniu, usuń całą listę i ponownie prześlij całą listę
, chyba że jest lepszy sposób? Korzystając z Linq (używając Linq do SQL), gdzie mogę wstawić nowe zamówienie na everychange i złożyć zmiany?
Jedną z rzeczy, o której pomyślałem, choć nie jestem pewien, czy jest ona ważna czy nie, jest, jeśli twój id jest w konflikcie z czymś innym na stronie? Na przykład używam wielu list, gdzie każdy rodzic listy ma numeryczny identyfikator, a każdy element ma numeryczny identyfikator, a zakresy identyfikatorów nadrzędnego i podrzędnego pokrywają się. Czyniąc to, może złamać regułę każdego elementu posiadającego unikalny identyfikator. Więc zamiast tego dodam coś do id, np. "rodzic" + identyfikator i "dziecko" + identyfikator – jamiebarrow