asp.net-mvc - come posso creare una vista per mostrare tutti gli utenti non approvati e consentire loro di essere approvati
-
06-07-2019 - |
Domanda
Ho questo codice nella mia classe di servizio di appartenenza (tratto dall'app di esempio asp.net-mvc)
public MembershipUserCollection GetUnapprovedUsers()
{
MembershipUserCollection users = Membership.GetAllUsers();
MembershipUserCollection unapprovedUsers = new MembershipUserCollection();
foreach (MembershipUser u in users)
{
if (!u.IsApproved)
{
unapprovedUsers.Add(u);
}
}
return unapprovedUsers;
}
Ora ho bisogno di una vista per mostrare questo elenco di informazioni e consentire a qualcuno di approvarle che torneranno al controller e imposteranno la proprietà IsApproved su true.
Soluzione
Crea una vista che genererà un modulo contenente etichetta e casella di controllo per ciascun membro della raccolta. Devi essere in grado di passare dall'ID della casella di controllo all'utente.
Nel metodo di azione HTTP.POST, scorrere i campi inviati cercando le caselle di controllo impostate, quando ne trovi uno impostato come utente approvato.
Ovviamente il modulo può visualizzare dettagli arbitrari per ciascun utente.
Per utilizzare gli helper di controllo integrati occorre un po 'più di sforzo perché non si dispone di un modello di dimensioni fisse con cui lavorare. Per ottenere qualcosa di simile I:
- Utilizzata una vista non tipizzata fortemente
- popolato
ViewData["ids"]
conIEnumerable<IdType>
(su cui la vista verrebbe ripetuta) - Per ogni voce popolata
ViewData["field" + id]
per ogni campo che stavo visualizzando nell'entità - Nella vista passata sopra gli ID
using ViewData["ids"]
per chiamare gli helper HTML con l'id del campo.
(Era V1, in V2 ho usato lo stato del modello in modo da poter utilizzare il supporto di visualizzazione dell'errore di convalida integrato, ma ciò non si applica se si desidera selezionare solo gli utenti.)
L'elaborazione POST è stata simile, ripopolando l'elenco di ID dal database e la ricerca nel FormCollection
passato