2011-01-05 2 views
1

Я использую все стандартные таблицы аутентификации форм ASP.NET для SQL Server (aspnet_Profile, aspnet_Roles, aspnet_Users и т. Д.). Я также добавил таблицу Employees в мою базу данных, которая содержит FK для aspnet_Users в UserId для создания отношения «один к одному» (UserId - это ПК в сотрудниках). Таблица Employees содержит столбцы для FirstName, LastName и т. Д. Это способ сохранить дополнительную информацию для пользователей.Создание модели и отображение ее в сетке в ASP.NET MVC

Я хочу, чтобы на экране отобразился список моих сотрудников. Он должен содержать следующую информацию:

  1. ПгвЬЫата и LastName из таблицы сотрудников
  2. UserName от aspnet_Users
  3. Email от aspnet_Membership
  4. через запятую список ролей пользователя находится, найденный с помощью Roles.GetRolesForUser(username)

Вот что я хотел бы сделать с моей странице просмотра:

<%@ Page Language="C#" 
    Inherits="System.Web.Mvc.ViewPage<IEnumerable<WebUI.Models.IndexModel>>" %> 

<table> 
    <tr> 
     <th></th> 
     <th>Employee</th> 
     <th>Username</th> 
     <th>E-mail Address</th> 
     <th>Roles</th> 
    </tr> 
    <% foreach (var item in Model) { %> 
     <tr> 
      <td></td> 
      <td><%: item.FirstName %> <%: item.LastName %></td> 
      <td><%: item.Username %></td> 
      <td><%: item.Email %></td> 
      <td><%: item.Roles %></td> <!-- i.e., "Admin, Sales Rep" --> 
     </tr> 
    <% } %> 
</table> 

Вот моя модель:

public class IndexModel 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Username { get; set; } 
    public string Email { get; set; } 
    public string[] Roles { get; set; } 
} 

И мой контроллер:

public ActionResult Index() 
{ 
    return View(); 
} 

Моя проблема, я не знаю, как загрузить свою модель с этими данными и передать его на мой взгляд , Я немного новичок в MVC, и я немного поработал с поиском. Мне кажется, я просто искал неправильную вещь.

Итак, как я могу загрузить свою модель с данными из этих разных таблиц?

EDIT: Я должен упомянуть, что я использую Entity Framework, поэтому я могу легко вытащить все данные из таблицы Employees.

ответ

1

вы так близко:

public ActionResult Index() 
{ 
    IEnumerable<IndexModel> model = new List<IndexModel>(); // or from your EF Repository 

    return View(model); 
} 

лично я хотел бы изменить свой объект модели для этого и обновить вид соответственно:

public class IndexModel 
{ 
    IList<UserInfo> Users { get; set; } 
} 

public class UserInfo // or whatever makes the most sense 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Username { get; set; } 
    public string Email { get; set; } 
    public string[] Roles { get; set; } 
} 
0

Вы передаете свою модель на ваш взгляд в контроллере:

public ActionResult Index() 
{ 
    List<IndexModel> items = new List<IndexModel>(); 
    // fill out list of items 

    return View(items); 
} 
Смежные вопросы