IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Afficher list dans une vue avec foreach


Sujet :

ASP.NET MVC

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Afficher list dans une vue avec foreach
    Bonjour à tous,

    Je me permets de venir à votre contact car je n'arrive pas à trouver la solution à mon problème. J'effectue une requête en Linq où je récupère un ccertain nombre de données que je formate en un tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    var posts = (from p in db.Post
                             join lp in db.LikePost on p.postID equals lp.postID into lps
                             orderby p.Date descending, p.postID descending
                             select new
                             {
                                 postID = p.postID,
                                 postText = p.Text,
                                 postFirstname = p.User.Firstname,
                                 postLastname = p.User.Lastname,
                                 postDate = p.Date,
                                 postLikeNBR = (
                                     from l in lps
                                     where l.Choice == 1
                                     select l
                                 ).Count(),
                                 postLikeUser = (
                                     from l in lps
                                     where l.userID == 1
                                     select l.Choice
                                 ).Count(),
                                 postComments = (
                                     from cm in db.Comment
                                     join lc in db.LikeComment on cm.commentID equals lc.commentID into lcs
                                     orderby cm.Date
                                     where cm.postID == p.postID
                                     select new
                                     {
                                         commentFirstname = cm.User.Firstname,
                                         commentLastname = cm.User.Lastname,
                                         commentDate = cm.Date,
                                         commentText = cm.Text,
                                         commentLikeNBR = (
                                             from l in lcs
                                             where l.Choice == 1
                                             select l.Choice
                                         ).Count(),
                                         commentLikeUser = (
                                             from l in lcs
                                             where l.userID == 1
                                             select l.Choice
                                         ).Count()
                                     }
                                 )
                             }).ToList();
                ViewBag.posts = posts;
                return View();
    je souhaite donc afficher ce résultat dans ma vue par un foreach
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     <table> 
    @foreach (var item in ViewBag.posts)
        {
            <tr>
                <td>
                    @item
                </td>
            </tr>
        }
    </table>
    et cela me renvoie donc sur ma page internet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    { postID = 2, postText = gthjkn, postFirstname = Axel, postLastname = Leynaert, postDate = 06/02/2013 18:50:00, postLikeNBR = 0, postLikeUser = 0, postComments = System.Data.Common.Internal.Materialization.CompensatingCollection`1[<>f__AnonymousType4`6[System.String,System.String,System.DateTime,System.String,System.Int32,System.Int32]] }
    { postID = 1, postText = dfghj, postFirstname = Axel, postLastname = Leynaert, postDate = 06/02/2013 18:50:00, postLikeNBR = 2, postLikeUser = 1, postComments = System.Data.Common.Internal.Materialization.CompensatingCollection`1[<>f__AnonymousType4`6[System.String,System.String,System.DateTime,System.String,System.Int32,System.Int32]] }
    { postID = 0, postText = azerty, postFirstname = , postLastname = , postDate = 06/02/2013 13:23:00, postLikeNBR = 0, postLikeUser = 0, postComments = System.Data.Common.Internal.Materialization.CompensatingCollection`1[<>f__AnonymousType4`6[System.String,System.String,System.DateTime,System.String,System.Int32,System.Int32]] }
    mais je n'arrive à atteindre les objets un à un, j'ai essayé item["postID"] ou même item.postID mais cela ne fonctionne pas, quelqu'un aurait-il une idée?

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Salut,

    A priori, posts est une liste d'objects et du coup mvc ne sait pas accéder aux propriétés.

    Créé une classe Post comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Post
    {
     public int postID;
    public int postText ;
    ...
    }
    Et dans ta lambda remplace
    par
    Voila, ce sera mieux.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    J'ai déjà eu le problème, en effet ce que explique mermich est tout à fait juste.

    Mais il y a une autre solution, tu peux directement travailler tes données de cette façon (j'imagine que ton db est ton DataContext, le new devant n'est pas obligatoire) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    List<Post> post = (from p in new db.Post
                             join lp in db.LikePost on p.postID equals lp.postID into lps
                             orderby p.Date descending, p.postID descending
                             select new
                             {
                                 postID = p.postID,
                                 postText = p.Text,
                                 postFirstname = p.User.Firstname,
                                 postLastname = p.User.Lastname,
                                 postDate = p.Date,
                                 postLikeNBR = (
                                     from l in lps
                                     where l.Choice == 1
                                     select l
                                 ).Count(),
                                 postLikeUser = (
                                     from l in lps
                                     where l.userID == 1
                                     select l.Choice
                                 ).Count(),
                                 postComments = (
                                     from cm in db.Comment
                                     join lc in db.LikeComment on cm.commentID equals lc.commentID into lcs
                                     orderby cm.Date
                                     where cm.postID == p.postID
                                     select new
                                     {
                                         commentFirstname = cm.User.Firstname,
                                         commentLastname = cm.User.Lastname,
                                         commentDate = cm.Date,
                                         commentText = cm.Text,
                                         commentLikeNBR = (
                                             from l in lcs
                                             where l.Choice == 1
                                             select l.Choice
                                         ).Count(),
                                         commentLikeUser = (
                                             from l in lcs
                                             where l.userID == 1
                                             select l.Choice
                                         ).Count()
                                     }
                                 )
                             }).ToList();

    Integral

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Merci
    Merci beaucoup, j'ai trouvé cette méthode sur un autre forum j'ai fait un essaie et cela marche très bien. J'ai fait de même pour récupérer les Commentaires avec un foreach et cela à très bien marché.

    J'ai une question à part, j'ai une variable de session qui contient l'id de l'utilisateur. je l'ai défini comme suis : HttpContext.Session.add("idUser", iduser);
    mais je n'arrive jamais à la récupérer dans le controller, j'ai souvent trouvé HttpContext.Current.Session('Iduser'), mais cela ne passe pas au niveau du Current, il y a une référence à rajouter?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Salut,

    Pour cela il fallait de regarder ce que visual studio te proposes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpContext.Session["idUser"];
    Attention à la casse sur "idUser" ,et pense au tag résolu.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 5
    Points
    5
    Par défaut MESSAGE D ERREUR :Impossible d'effectuer une liaison au moment de l'exécution sur une référence null
    Bonjour,

    Pour ma part, j'essaye d'afficher dans ma vue une liste en faisant un foreach après avoir complété un formulaire qui va me permettre d'entrer les paramètres que je veux afficher.

    Mais dans ma vue il me mets cette erreure :Impossible d'effectuer une liaison au moment de l'exécution sur une référence null.

    Je ne travaille pas avec des modèle, je fais référence à un SERVICE qui a déjà une méthode toute faite.

    VUE
    @foreach (System.Data.DataRow dr in ViewBag.ListeLot.Rows)
    {
    <tr>
    <td>@Html.DisplayName(dr["NOM_LOT"].ToString()) </td>
    <td>@Html.DisplayName(dr["ID_STATUT"].ToString()) </td>
    <td>@Html.DisplayName(dr["DATE_CREATION"].ToString()) </td>
    <td>@Html.DisplayName(dr["DATE_UPDATE"].ToString()) </td>
    <td>@Html.DisplayName(dr["NB_DOCS"].ToString()) </td>
    </tr>
    }

    CONTROLLER:
    string l_TypeDoc = "BI";
    string l_nomLot = "MAPUTO 20100416";
    string l_id_statut = "1";
    string l_date1_Search = "02/02/2012
    string l_date2_Search = "02/04/2013";

    DataSet l_dataset_ListeLot = new DataSet();
    l_dataset_ListeLot = m_service.listEntitesDetermineFiltre("ListeLot", l_id_statut, l_TypeDoc, "true", l_nomLot, l_date1_Search, l_date2_Search).m_DataSet;/*service*/

    if (l_dataset_ListeLot != null)
    {
    ViewBag.ListeLot = l_dataset_ListeLot.Tables[0];
    return View(ViewBag.ListeLot);
    }

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insert dans une vue avec une valeur par défaut
    Par adiGuba dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/07/2010, 15h12
  2. [MySQL] Insérer des données dans une table avec Foreach
    Par Gogad dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/04/2010, 08h53
  3. Select dans une vue avec hibernate
    Par Sniper37 dans le forum Hibernate
    Réponses: 1
    Dernier message: 04/03/2009, 16h25
  4. Réponses: 2
    Dernier message: 26/01/2009, 15h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo