Как я должен обрабатывать ситуации удаления в ASP.NET MVC - PullRequest
2 голосов
/ 06 января 2009

Как мне начать удаление с моего экрана?

Создание нового тега формы для каждой сущности просто не выглядит правильным: -)

<% foreach (var subscriber in group.Subscribers) { %>
        <tr>
            <td><%= subscriber.Email %></td>
            <td><%= Html.ActionLink("[edit]", "edit", "subscriber", new {id=subscriber.SubscriberId}, null) %></td>
            <td>
                <form id="delete-subscriber-form" method="post" action="<%= Url.Action( "delete", "subscriber", new { @subscriberId = subscriber.SubscriberId }) %>">
                    <input type="submit" value="Delete" />
                </form>
            </td>
        </tr>
        <% } %>

Как бы вы это сделали?

Ответы [ 3 ]

5 голосов
/ 06 января 2009

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

0 голосов
/ 06 января 2009

В зависимости от ситуации, если вы выполняете операции CRUD, вы обычно используете один тег <form> на операцию (удаление, редактирование, новое). Однако, если вы отображаете список и хотите иметь возможность «многократного удаления» элементов одним щелчком мыши, вам придется подойти к нему под другим углом, поскольку вам необходимо заключить всю необходимую информацию в одну форму. *

EDIT

Посмотрев на ваш пост еще раз, я заметил, что вы предоставляете кнопку «Удалить» для каждого элемента в списке. Для атомарных действий, подобных этому (то есть пользователь ожидает, что что-то произойдет сразу после нажатия кнопки), я бы определенно использовал одну форму на элемент.

То, что я написал выше, все еще применимо ...

0 голосов
/ 06 января 2009

вы можете использовать CSS и Javascript, добавить класс css 'forDel' для всех элементов, которые вы хотите удалить, если вы собираетесь использовать jquery, вы можете сделать это следующим образом:

    $(".element").each(function(){
      $(this).data("id","the id of the element in db")
    });

    $(".element").toggle(function(){
      $(this).addClass("forDel");
    },function(){
   $(this).removeClass("forDel");
   });

и затем при нажатии кнопки удаления:

var idsForDel;
    $(".forDel").each(function(){
   idsForDel = $(this).data("id"); + ";";
})

вы можете передать idsForDel в контроллер ... и разделить его на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...