asp.net - come determinare quale casella di controllo è correlata a ciascuna riga (utente)

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

  •  06-07-2019
  •  | 
  •  

Domanda

Sto usando asp.net mvc. Ho generato una vista che recupera tutti gli utenti non approvati nella tabella di appartenenza asp.net. Ho messo delle caselle di controllo accanto a loro per far apparire qualcuno. L'obiettivo è che qualcuno dovrebbe essere in grado di selezionare determinate caselle di controllo, premere Salva e questo tornerà all'iscrizione asp.net e cambierà il flag IsApprove su true per questi utenti.

Come estraggo quali campi sono impostati come veri quando sono nella classe controller?

ecco il codice di visualizzazione:

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

Ecco il codice del controller:

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

Soluzione

Prima di tutto, fai attenzione con Html.Checkbox (). Non solo rende una casella di controllo, ma anche un campo nascosto. A ciascun utente (come "nomeutente1" in questo caso) verrà eseguito il rendering di:

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

Questa domanda e risposta selezionata discus più in dettaglio. Un'opzione è semplicemente scrivere l'html per questo, come ad esempio:

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

Quando questo viene pubblicato sul tuo Controller puoi recuperarlo tramite Request.Form [member.Username] . Se è null, la casella non è stata selezionata. Se ha un valore di " On " ;, lo era.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top