Сохранение JQuery Sortable (новый заказ) для ASP.Net MVC-контроллера?

Я реализовал сортировку JQuery, и он отлично работает. Проблема в том, что я не могу передать список в своем новом порядке контроллеру, поэтому я могу его сохранить.

<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>  

и мой контроллер:

[HttpPost]  
    public EmptyResult SortedLists(List<string> items)  
    {  
        return new EmptyResult();  
    }  

Элементы списка возвращаются с количеством экземпляров corrent, за исключением каждого элемента - пустые строки.

Если исходный список выглядит следующим образом

  • 1 - Автомобиль
  • 2 - Лодка
  • 3 - Мотоцикл
  • 4 - Самолет

И пользователь тащит и прибегает к

  • 4 - Самолет
  • 1 - Автомобиль
  • 3 - Мотоцикл
  • 2 - Лодка

Как я могу передать этот новый заказ? Я полагаю, что id передал все это, чтобы отправить, удалить весь список и повторно отправить весь этот список.

разве лучший способ? Воспользовавшись Linq (используя Linq to SQL), где я могу вставить новый порядок на каждый обмен и внести изменения в submit?

Ответ 1

Все, что мне нужно было сделать, это заполнить поле id для каждого элемента списка, toArray метод вернул список штрафа после этого

<ul id="sortable">  
    <% foreach (var item in Model.Roles) { %>                  
        <li id="<%=Html.AttributeEncode(item.Name)%>"><%=Html.AttributeEncode(item.Name)%></li>                                                                                    
    <% } %>             
</ul>  

Ответ 2

В таблицах вы можете создавать скрытые входы, это может помочь вам публиковать значения для вашего контроллера, чем вы можете легко его сохранить;)

Это должно быть так:

<form method="post" action="~/NameController/yourAction">
   <ul id="sortable1">

    <li><input type="hidden" id="id" name="Id"/></li>
    <li><input type="hidden" id="UserId" name="UserId"/></li>
    <li><input type="hidden" id="TeamId" name="TeamId"/></li>

 </ul>
  <button type="submit">Save</button>
</form>

Надеюсь, что это поможет;)