Jemes
Jemes

Reputation: 407

List of Users and Role using Membership Provider

I’m trying to produce a view to show a list of users and their role using the built in membership provider.

My model and controller are picking up the users and roles but I’m having trouble displaying them in my view.

Model

public class AdminViewModel
    {
        public MembershipUserCollection Users { get; set; }
        public string[] Roles { get; set; }
    }

Controller

public ActionResult Admin()
{
      AdminViewModel viewModel = new AdminViewModel
      {
            Users = MembershipService.GetAllUsers(),
        Roles = RoleService.GetRoles()
      };

      return View(viewModel);
}

View

Inherits="System.Web.Mvc.ViewPage<IEnumerable<Account.Models.AdminViewModel>>"

<table>

<tr>
    <td>UserName</td>
    <td>Email</td>
    <td>IsOnline</td>
    <td>CreationDate</td>
    <td>LastLoginDate</td>
    <td>LastActivityDate</td>
</tr>

<% foreach (var item in Model) { %>

<tr>
    <td><%=item.UserName %></td>
    <td><%=item.Email %></td>
    <td><%=item.IsOnline %></td>
    <td><%=item.CreationDate %></td>
    <td><%=item.LastLoginDate %></td>
    <td><%=item.LastActivityDate %></td>
    <td><%=item.ROLE %></td>
</tr>

<% }%>

</table>

Upvotes: 3

Views: 3877

Answers (2)

Nathan Taylor
Nathan Taylor

Reputation: 24606

Like Andrew said, you need to make your View inherit from AdminViewModel, not IEnumerable<AdminViewModel>. Once that is corrected you'll need to iterate over Model.Users, instead of Model in your foreach. Model.Users will contain the MembershipUser objects with the Username property.

<% foreach (var item in Model.Users) { %>

<tr>
    <td><%=item.UserName %></td>
    <td><%=item.Email %></td>
    <td><%=item.IsOnline %></td>
    <td><%=item.CreationDate %></td>
    <td><%=item.LastLoginDate %></td>
    <td><%=item.LastActivityDate %></td>
    <td><%=item.ROLE %></td>
</tr>

<% }%>

Upvotes: 1

Andrew Florko
Andrew Florko

Reputation: 7750

What kind of trouble it is? Please, make sure under debugger that lists you put into model are populated (non-empty).

By the way:

foreach (var item in Model)

looks like you mentioned

foreach (var item in Model.Users) 

Upvotes: 0

Related Questions