ASP.NET MVC3使用子表单删除记录

时间:2011-02-01 11:21:06

标签: asp.net asp.net-mvc-3

我正在尝试使用子表单删除在ManageUser视图的表格中显示的记录,因此

<table cellpadding="2" cellspacing="0" border="1" summary="User Grid" style="text-align: left">
    <tr style="background-color: #ABC3CB;">
        <th align="center">User Name</th>
        <th align="center">Approved</th>
        <th align="center">&nbsp;</th>
        <th align="center">&nbsp;</th>
    </tr>
    <% foreach(MembershipUser membershipUser in ViewData.Model) { %>
        <tr>
            <td><%: membershipUser.UserName %></td>
            <td align="center"><%: Html.CheckBox(" ", true, membershipUser.IsApproved )  %></td>
            <td align="center">
                <% using (Html.BeginForm( "DeleteItem", "Admin", new { id = membershipUser.UserName } )) { %>
                    <input type="image" src="<%: Url.Content( "~/Content/Images/Delete.jpg" ) %>" />
                <% } %>
            </td>
        </tr>
    <% } %>
</table>

ManageUser视图由AdminController中的以下代码显示,因此

    public ViewResult ManageUser( string searchType, string searchInput )
{
    List<SelectListItem> searchOptionList = new List<SelectListItem>()
    {
        new SelectListItem() {Value="UserName", Text = "UserName"},
        new SelectListItem() {Value="Email", Text = "Email"},
    };

    ViewData["searchOptionList"] = new SelectList( searchOptionList, "Value", "Text", searchType ?? "UserName" );
    ViewData["searchInput"] = searchInput ?? string.Empty;
    ViewData["searchType"] = searchType;

    MembershipUserCollection viewData;

    if (String.IsNullOrEmpty( searchInput ))
        viewData = Membership.GetAllUsers();
    else if (searchType == "Email")
        viewData = Membership.FindUsersByEmail( searchInput );
    else
        viewData = Membership.FindUsersByName( searchInput );

    ViewData["PageTitle"] = "Account Management";
    return View( viewData );
    }

当我显示页面并选择删除选项时,我希望它在AdminController中运行Admin / DeleteItem,因此

    public RedirectToRouteResult DeleteItem( string id )
{
    Membership.DeleteUser( id );
    return RedirectToAction( "ManageUser" );
}

但是,它会直接返回Admin / ManagerUser视图,从而再次显示我的原始记录集。

我显然错过了一些东西,但我看不清楚。有人帮忙吗?

1 个答案:

答案 0 :(得分:1)

HTML <form>元素不能嵌套。嵌套它们会导致意外行为,这可能因不同浏览器而异。引自the specification

  

每个表格必须包含在一个表格内   FORM元素。可能有几个   单个文档中的表单,但是   FORM元素不能嵌套。

因此,您可能需要删除外部表单或找到另一种组织标记的方法。