2011-01-05 3 views
1

Ich verwende alle standardmäßigen ASP.NET-Formularauthentifizierungstabellen für SQL Server (aspnet_Profile, aspnet_Roles, aspnet_Users usw.). Ich habe auch eine Employees-Tabelle zu meiner Datenbank hinzugefügt, die ein FK zu aspnet_Users auf UserId enthält, um eine Eins-zu-eins-Beziehung zu erstellen (UserId ist das PK in Employees). Die Employees-Tabelle enthält Spalten für FirstName, LastName usw. Es ist eine Möglichkeit für mich, zusätzliche Informationen für die Benutzer zu speichern.Erstellen eines Modells und Anzeigen in einem Raster in ASP.NET MVC

Ich möchte eine Raster-Liste meiner Mitarbeiter haben. Es braucht diese Informationen zu enthalten:

  1. Vornamen und Nachnamen aus der Tabelle Employees
  2. Username von aspnet_Users
  3. E-Mail von aspnet_Membership
  4. Eine durch Kommata getrennte Liste von Rollen der Benutzer befindet, gefunden Roles.GetRolesForUser(username) mit

Hier ist, was ich mit meiner Ansicht Seite tun möchte:

<%@ 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> 

Hier ist mein Modell:

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; } 
} 

Und mein Controller:

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

Mein Problem ist, ich weiß nicht, wie diese Daten mein Modell zu laden und geben sie nicht an meine Sicht auf . Ich bin ein wenig neu bei MVC, und ich habe ein bisschen herumgesucht, ohne Glück, ich denke, ich suche nur nach dem Falschen.

Wie kann ich mein Modell mit den Daten aus diesen verschiedenen Tabellen laden?

EDIT: Ich sollte erwähnen, ich benutze Entity Framework, so kann ich leicht alle Daten aus der Tabelle Employees ziehen.

Antwort

1

Sie sind so nah:

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

    return View(model); 
} 

ich persönlich würde Ihr Modell dieses Objekt ändern und Ihre Ansicht entsprechend aktualisieren:

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

geben Sie Ihr Modell in Ihrer Ansicht nach in Ihrem Controller:

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

    return View(items); 
} 
Verwandte Themen