Liste des Utilisateurs avec des rôles dans MVC Asp.net identité
Je veux avoir la liste de tous les utilisateurs inscrits sur mon site avec leurs rôles.
Id | Nom | Rôle
1 | ABC | Admin
2 | DEF | Utilisateur
Quelque chose comme ça, j'ai fait des Rôles de contrôleur dans lequel tous les rôles est répertorié.
public ActionResult Index()
{
var roles = context.Roles.ToList();
return View(roles);
}
En Vue
@model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>
@{
ViewBag.Title = "Index";
}
<div>
@foreach (var role in Model)
{
<p>
<strong>@role.Name | </strong>
</p>
}
</div>
Ce sera la liste de tous les rôles, mais je veux la liste des utilisateurs avec leurs rôles.
Veuillez donner toute solution, Merci
context.Users
devrait avoir Roles
propriété pour chaque user
: var usersWithRoles = context.Users.Select(x => new UserWithRolesViewModel {User = x, UserRoles = x.Roles}).ToList();
Espace de noms dois-je ajouter dans la Vue de cette actionResult Méthode?
et qu'est-ce que 'UserWithRolesViewModel' après un nouveau mot-clé ? Je suis désolé de poser de telles bêtises, mais je suis nouveau dans le développement MVC
OriginalL'auteur Rras | 2015-01-03
Vous devez vous connecter pour publier un commentaire.
Créer une nouvelle classe appelée UserViewModel. Ceci agira comme un modèle d'affichage de votre page.
Dans le contrôleur de la méthode d'action, d'obtenir la liste des utilisateurs avec leurs rôles et carte de la UserViewModel.
Alors utiliser le nouveau modèle dans la vue. Assurez-vous d'utiliser les bons d'espace de noms ici, si vous avez défini votre modèle de vue.
'Système.Les données.De l'entité.DynamicProxies.IdentityUserRole_3D0B060DC86D63C1e4cdda517bfe9d83adb0e80 " c'est ce qu'il s'affiche dans la colonne de Rôle
Merci beaucoup, Ça fonctionne 😀 Si u peut me dire une chose de plus que si je veux les Utilisateurs du groupe selon les Rôles, à l'instar de tous les Administrateurs de l'ensemble, puis tous les Utilisateurs
J'ai mis à jour la réponse. Laissez-moi savoir si cela résout le problème.
Je ne sais pas pourquoi c'est la réponse. C'est à tort.
Roles
est une collection deIdentityUserRole
objets, qui n'ont PAS deName
de la propriété. Le code ne fonctionne pas.OriginalL'auteur Imran Rashid
Bien qu'il est un peu tard pour répondre à cette question, mais ici, c'est pour l'avenir des visites:
Vue de créer de la classe du modèle:
Puis remplir ce point de vue de la classe du modèle de contrôleur:
Ici,
context.Users
représente laAspNetUsers
table qui a une propriété de navigationRoles
qui représente laAspNetUserInRoles
table. Ensuite, nous avons effectuer une jointure decontext.Roles
qui représente laAspNetRoles
tableau pour obtenir le nom du rôle.Maintenant de retour cette liste à votre vue "Index":
Dans la vue pour afficher la liste des utilisateurs avec des rôles:
Edit: Pour obtenir de multiples rôles de l'utilisateur(le cas échéant)
Si un utilisateur dispose de plusieurs rôles, plusieurs enregistrements. de la même utilisateur sont créés. Pouvons-nous la liste de tous les rôles attribués à l'utilisateur dans une seule colonne?...Aussi, si un utilisateur n'a pas les rôles, ils ne sont pas affichés, comment pouvons-nous montrer les utilisateurs qui ne sont affectés à aucune des rôles?
J'ai mis à jour ma réponse, maintenant il montre aussi une option pour afficher plusieurs rôles dans la même colonne(séparés par des virgules). Il comprend également les utilisateurs qui ne sont affectés à aucune des rôles
OriginalL'auteur Zahir Firasta
J'ai une solution comme ci-dessus.
C'est une solution en MVC 6.
Dans AccountViewModel.cs ajouter des modèles
le contrôleur est comme suit:
enfin la vue:
Roles
de biens à une liste deIdentityUserRole
au lieu d'une liste deIdentityRole
, que nous avons ensuite besoin de comparer par Id et pas seulement le nom, mais l'ajout d'un utilisateur avec leRoleManager
fonctionne encore avec le nom de rôle et pas Id.OriginalL'auteur Armando Baltazar
J'ai aussi une solution comme ci-dessus. C'est une solution en MVC 6.
la raison pour cela est que j'ai essayer le code ci-dessus et sont confrontés à des problèmes. donc..
permet de démarrer Créer une nouvelle classe appelée UserViewModel. Ceci agira comme un modèle d'affichage de votre page
Le contrôleur est comme suit:
enfin la vue:
OriginalL'auteur Ad Kahn