我应该如何处理ASP.NET MVC中的删除情况

时间:2009-01-06 14:03:24

标签: asp.net-mvc

如何从我的视图中启动删除操作?

为每个实体创建一个新的表单标签似乎不对: - )

<% 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 个答案:

答案 0 :(得分:5)

我通常使用项目侧面的复选框。然后我可以使用动作链接(按钮,等等)将动作应用于所选项目(例如删除)。

答案 1 :(得分:0)

你可以使用CSS和Javascript,为你要删除的所有元素添加'forDel'css类,如果你打算使用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传递给Controller ...并将其拆分到服务器端。

答案 2 :(得分:0)

这取决于具体情况,如果您正在进行CRUD操作,通常每次操作都会使用一个<form>标记(删除,编辑,新建)。但是,如果您正在显示一个列表,并且希望能够通过一次单击“多次删除”项目,那么您将需要从不同的角度处理它,因为您需要将所有必需的信息封装到一个表单中。

修改

再看看你上面的帖子,我注意到你正在为列表中的每个元素提供一个“删除按钮”。对于像这样的原子动作(即用户希望在点击按钮后直接发生某些事情),我肯定会为每个项目使用一个表单。

我上面写的内容仍然适用......