asp.net - 如何确定哪个复选框与每一行(用户)相关联

时间:2009-07-31 19:46:02

标签: asp.net-mvc membership

我正在使用asp.net mvc。我已生成一个视图,用于检索asp.net成员资格表中的所有未批准用户。我在他们旁边放了一些复选框,供某人调出一个视图。目标是有人应该能够检查某些复选框,点击保存,这将返回到asp.net成员资格,并将这些用户的IsApprove标志更改为true。

当我在控制器类中时,如何提取哪些字段设置为true?

这是视图代码:

<% using (Html.BeginForm()) {%>
<table id="hor-zebra" border = 2>
<tr><td>User</td><td>Approve</td>
</tr>
<%
    MembershipUserCollection membership = (MembershipUserCollection)ViewData["UnapprovedUsers"];
    foreach (MembershipUser member in membership)
     {
        %><tr><td>
        <%=Html.Encode(member.UserName) %> </td><td>
        <%= Html.CheckBox("Approve:" + member.UserName, false) %>
        </td></tr>
  <%
     }
%>
</table>
<input type="submit" value="Save" /><% } %>

这是控制器代码:

    [AcceptVerbs(HttpVerbs.Post)]
    public void ApproveUsers(FormCollection formCollection)
    {
        Console.Write("I have not idea how i can determine which checkboxes are checked");
    }

1 个答案:

答案 0 :(得分:1)

首先,请注意Html.Checkbox()。它不仅渲染复选框,还渲染隐藏字段。每个用户(例如本例中的“username1”)将呈现以下内容:

<input id="Approve: username1" name="Approve: username1" type="checkbox" value="true"/>
<input name="Approve: username1" type="hidden" value="false" />

question and selected answer更详细地讨论它。一种选择是自己编写html,例如:

<input type="checkbox" name="<%=member.UserName%>" />

当它发布到您的控制器时,您可以通过Request.Form[member.Username]检索它。如果它为null,则不检查该框。如果它的值为“On”,那就是。