2010-11-06 4 views
0

Je travaille sur une page sur mon petit projet où je veux lister tous les utilisateurs dans ma base de données à une page.Envoyer une liste à la vue

En ce moment je suis à l'instruction select, mais je ne sais pas comment passer à la vue:

public ActionResult Index() 
{ 
    SqlConnection connection = new ... 
    connection.Open(); 

    SqlCommand command = new SqlCommand("SELECT * FROM users", connection); 

    ??? 

Comment passe-je à la vue et comment puis-je énumérer tous les éléments ? Aucune suggestion?

+0

Je vous suggère fortement de jeter un oeil à la « séparation des préoccupations » - http://en.wikipedia.org/wiki/Separation_of_Concerns. Vous ne devriez pas avoir d'appels de base de données directement dans vos actions et devriez toujours essayer de les faire abstraction dans des couches séparées. –

+0

vous remercie pour votre commentaire, mais c'est un projet plutôt petit, donc je veux juste le faire: D – Jason94

+0

C'est une raison terrible IMO. Vous ne créez que de la dette technique pour vous-même. –

Répondre

2

Ce que vous devez faire est de remplir ViewData.Model avec votre liste d'utilisateurs. Donc, essayez ceci:

//Same code as you already have... 

SqlDataAdapter da = new SqlDataAdapter(command); 
DataTable dt = new DataTable(); 
da.Fill(dt); 

List<CustomUserObject> userList = new List<CustomUserObject>(); 

foreach (DataRow dr in dt.Rows) 
{ 
    //Create a class to house your user object before this next part will work. 
    CustomUserObject cuo = new CustomUserObject { FirstName = dt.Rows[0]["FirstName"].ToString(), LastName = dt.Rows[0]["LastName"].ToString(), etc... }; 
    userList.Add(cuo); 
} 

ViewData.Model = userList; 

return View(); 

Maintenant, en supposant que vous n'avez pas créé la vue de votre méthode d'action encore, cliquez à droite quelque part dans la méthode d'action (dans Visual Studio) et de créer la vue. Assurez-vous que la vue Type fortement typé est sélectionnée. Définissez le modèle de vue sur IEnumerable<CustomUserObject>. Maintenant, lorsque vous êtes dans la vue, vous référencer votre modèle comme ceci.

<% foreach (CustomUserObject cuo in Model) 
{ %> 
    <%: Html.TextBoxFor(cuo.FirstName) %> 
    <!-- More controls for all properties on your user object... --> 
<% } %> 
+0

Maintenant, bien sûr, Dan Atkinson, le commentaire sous votre poste, est correct. Je recommande de jeter les éléments SqlConnection et d'utiliser LINQ et Entity Framework au profit des requêtes fortement typées, mais c'est un autre sujet car votre question ne portait que sur la manière de référencer les données dans la vue. – Chev

+0

Spot sur, merci! – Jason94

+0

Je ne peux pas commenter d'autres réponses jusqu'à ce que j'ai 50 rep, mais je voulais juste dire quelque chose en ce qui concerne le commentaire de Dan. Il a absolument raison. Si vous allez utiliser MVC, je vous recommande fortement d'adopter une adhésion presque religieuse à la séparation des préoccupations. Vous devriez avoir toute une autre classe qui agit comme votre modèle de données et qui ont des appels à la base de données. Même si vous ne voulez pas tout faire avec LINQ to Entities, je recommande encore l'affacturage de tous les codes liés à la base de données dans un modèle de données/couche et de faire de votre modèle de domaine. – Chev

Questions connexes