asp.net: ¿cómo determino qué casilla de verificación se correlaciona con cada fila (usuario)?
-
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");
}
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.