asp.net: ¿cómo determino qué casilla de verificación se correlaciona con cada fila (usuario)?

StackOverflow https://stackoverflow.com/questions/1214503

  •  06-07-2019
  •  | 
  •  

Pregunta

Estoy usando asp.net mvc. He generado una vista que recupera todos los usuarios no aprobados en la tabla de membresía asp.net. He puesto casillas de verificación junto a ellas para que alguien pueda verlas. El objetivo es que alguien pueda marcar ciertas casillas de verificación, pulsar guardar y eso volverá a ser miembro de asp.net y cambiará el indicador IsApprove a verdadero para estos usuarios.

¿Cómo extraigo qué campos se establecen como verdaderos cuando estoy en la clase de controlador?

aquí está el código de vista:

<% 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" /><% } %>

Aquí está el código del controlador:

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

Solución

En primer lugar, tenga cuidado con Html.Checkbox (). No solo representa una casilla de verificación, sino también un campo oculto. Cada usuario (como " nombre de usuario1 " en este caso) tendrá la siguiente representación:

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

Esta pregunta y respuesta seleccionada discuta con más detalle. Una opción es escribir el html usted mismo para esto, como:

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

Cuando esto se publique en su controlador, puede recuperarlo mediante Request.Form [member.Username] . Si es nulo, no se marcó la casilla. Si tiene un valor de " Activado " ;, lo era.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top