2009-05-17 25 views
15

Estoy tratando de mostrar una lista de todos los usuarios pero no estoy seguro de cómo hacerlo con el modelo MVC.ASP.NET MVC Listar todos los usuarios

Puedo obtener la lista de todos los usuarios a través del método Membership.GetAllUsers(); sin embargo, si trato de pasar esto a la vista desde el ActionResult, me dicen que el Modelo no es enumerable.

+0

Gracias a todos por la ayuda. Soy nuevo en esto de MVC y no me di cuenta de que podía escribir fuertemente el Modelo. ¡Saludos! –

+0

Con ASP.NET MVC 4 y SimpleMembershipProvider 'Membership.GetAllUsers()' no es compatible. En su lugar use, 'using (var ctx = new UsersContext()) {var users = ctx.UserProfiles.ToList(); } ' –

Respuesta

29

usted tiene que fijar la vista para aceptar un objeto de tipo MembershipUserCollection

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

En su acción:

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

entonces usted puede escribir en su opinión, algo así como:

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

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

     <% }%> 
</ul> 
+0

parece que no funciona en MVC4 en mi aplicación – Dashrath

0

[Editar] En concreto, lo que hace la vista se ven iguales (por ejemplo, ¿de qué se espera conseguir que el modelo, ¿cómo estás de análisis de la colección, etc.)

Se puede publicar algo de código? Estoy haciendo algo similar, pero no tengo problemas.

3

En su página de vista, en la parte superior, debe establecer el tipo de página de vista. IE:

En la parte superior de la vista, en la primera línea del marcado, verá algo como esto:

Inherits="System.Web.Mvc.ViewPage" 

cambio que sea:

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

o lo que sea el tipo que intentas pasar a la vista. El objeto "Modelo" será ahora del tipo MembershipUserCollection sobre el que puede iterar de forma segura.

0

Parece que necesita hacer que su vista sea fuertemente tipada. Haga que su vista derive de ViewPage<MembershipUserCollection> en lugar de solo ViewPage. Otra solución consiste en emitir su modelo a MembershipUserCollection en su opinión:

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

Try objeto de aplicación 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()+" | "; 

añadir al código objeto de aplicación

 Application["users"] = users; 

retrive del objeto applicaton

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

esto le ayudará

Cuestiones relacionadas