2009-05-17 1 views
15

Sto tentando di mostrare un elenco di tutti gli utenti ma non sono sicuro su come procedere utilizzando il modello MVC.ASP.NET MVC Elenca tutti gli utenti

posso ottenere l'elenco di tutti gli utenti attraverso il metodo Membership.GetAllUsers() se provo a passare questo per la vista dal ActionResult, mi hanno detto che sul soggetto non è enumerabile.

+0

Grazie a tutti per l'aiuto. Sono nuovo di questo roba MVC e non mi sono reso conto che potevo scrivere con forza il Modello. Saluti !! –

+0

Con ASP.NET MVC 4 e SimpleMembershipProvider 'Membership.GetAllUsers()' non è supportato. Usa invece, 'using (var ctx = new UsersContext()) {var users = ctx.UserProfiles.ToList(); } ' –

risposta

29

è necessario impostare la visualizzazione di accettare un oggetto di tipo MembershipUserCollection

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MembershipUserCollection>" %> 

In vostra azione:

public ActionResult GetUsers() 
     { 
      var users = Membership.GetAllUsers(); 
      return View(users); 
     } 

allora si può scrivere nella vista una cosa del genere:

<ul> 
     <%foreach (MembershipUser user in Model){ %> 

     <li><%=user.UserName %></li> 

     <% }%> 
</ul> 
+0

non sembra funzionare in MVC4 nella mia applicazione – Dashrath

0

[Edit] In particolare, che cosa fa l'aspetto vista come (per esempio che cosa è in attesa di ottenere il modello, come stai analisi del raccolta, etc.)

potete inserire un certo codice? Sto facendo qualcosa di simile, ma non ho problemi.

3

Nella pagina della visualizzazione, in alto, è necessario impostare il tipo di visualizzazione della pagina. IE:

Sulla parte superiore della vostra vista, nella prima riga del markup, vedrete qualcosa di simile:

Inherits="System.Web.Mvc.ViewPage" 

Cambiamento che, per essere:

Inherits="System.Web.Mvc.ViewPage<MembershipUserCollection>" 

o qualsiasi altra cosa il tipo che stai cercando di passare alla vista. L'oggetto "Modello" sarà ora di tipo MembershipUserCollection che puoi tranquillamente ripetere.

0

Sembra che sia necessario rendere la vista fortemente tipizzata. La tua visualizzazione deriva da ViewPage<MembershipUserCollection> anziché solo da ViewPage. Un'altra soluzione è quella di lanciare il modello in MembershipUserCollection nella vista:

<% var members = (MembershipUserCollection) ViewData.Model %> 
<% foreach (MembershipUser user in members) { %> 
     <%-- Do Stuff with the user --%> 
<% } %> 
0

Prova oggetto applicazione asp.net

 string id = Session.SessionID.ToString(); 
     String[] users = new String[1000]; 
     users = (string[])Application["users"]; 
     int count=0; 
     for (int d=0;1000 >d ;d++) 
     { 
      if (users == null) { users = new String[1000]; } 
      count = d; 
      if (users[d] == null) { break; } 
     } 
     users[count] = id; 
     Application["users"] = users; 
     string[] usersTable = (string[])Application["users"]; 
     for (int d=0;1000 >d ;d++) 
     { 
      if (usersTable[d] == null) { break; } 
     Label1.Text += usersTable[d].ToString()+" | "; 

da aggiungere al codice oggetto applicazione

 Application["users"] = users; 

retrive da oggetto applicaton

 string[] usersTable = (string[])Application["users"]; 

questo ti aiuterà