2009-05-17 8 views
15

J'essaie d'afficher une liste de tous les utilisateurs, mais je ne sais pas comment faire à ce sujet en utilisant le modèle MVC.ASP.NET MVC Liste tous les utilisateurs

Je peux obtenir la liste de tous les utilisateurs via la méthode Membership.GetAllUsers() mais si j'essaie de passer cela à la vue du ActionResult, on me dit que Model n'est pas énumérable.

+0

Merci à tous pour l'aide. Je suis nouveau dans ce domaine MVC et je ne savais pas que je pourrais taper fortement le modèle. À votre santé !! –

+0

Avec ASP.NET MVC 4 et SimpleMembershipProvider 'Membership.GetAllUsers()' n'est pas pris en charge. Au lieu de cela, utilisez, 'using (var ctx = nouveau UsersContext()) {var users = ctx.UserProfiles.ToList(); } ' –

Répondre

29

Vous devez définir la vue d'accepter un objet de type MembershipUserCollection

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

Dans votre action:

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

alors vous pouvez écrire dans votre point de vue quelque chose comme:

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

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

     <% }%> 
</ul> 
+0

il ne semble pas fonctionner dans MVC4 dans mon application – Dashrath

0

[Modifier] Plus précisément, qu'est-ce que l'apparence de vue comme (par exemple ce qui est tout l'espoir d'obtenir le modèle, comment vous analysez la collection, etc.)

Pouvez-vous un peu de code? Je fais quelque chose de similaire, mais je n'ai pas de problèmes.

3

Dans votre page d'affichage, en haut, vous devez définir le type de la page d'affichage. IE:

En haut de votre vue, dans la première ligne du balisage, vous verrez quelque chose comme ceci:

Inherits="System.Web.Mvc.ViewPage" 

changement qui soit:

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

ou tout le type que vous essayez de transmettre à la vue. L'objet "Model" sera maintenant de type MembershipUserCollection que vous pourrez parcourir en toute sécurité.

0

Il semble que vous ayez besoin de rendre votre vue fortement typée. Votre vue dérive-t-elle de ViewPage<MembershipUserCollection> au lieu de ViewPage. Une autre solution est de lancer votre modèle MembershipUserCollection dans votre vue:

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

Essayez objet d'application 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()+" | "; 

ajouter au code objet d'application

 Application["users"] = users; 

retrive d'objet applicaton

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

cela va vous aider

Questions connexes