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 :

Object.SousObject dans cshtml


Sujet :

ASP.NET MVC

  1. #1
    Membre éclairé Avatar de kratoce
    Homme Profil pro
    Apprenti
    Inscrit en
    Octobre 2012
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Octobre 2012
    Messages : 270
    Par défaut Object.SousObject dans cshtml
    Bonjour,

    Je ne sais pas si l'intitulé du problème correspond bien

    J'ai deux object, Question et Proposition telle que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Question
        {
            public int Id { get; set; }
            [Display(Name = "Énoncé")]
            public string Enonce { get; set; }
            public virtual List<Proposition> LesPropositions { get; set; }
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Proposition
        {
            public int Id { get; set; }
            public string Libelle { get; set; }
            public bool Reponse { get; set; }
        }
    Je souhaite afficher dans ma vue la liste des questions avec, pour chaque question, la liste de ces propositions.

    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
     
    <table>
            <tr>
                <th>Id</th>
                <th>Enonce</th>
                <th>Propositions</th>
                <th>Modifier</th>
            </tr>
            @foreach (var question in Model)
            {
                <tr>
                    <td>@question.Id</td>
                    <td>@question.Enonce</td>
     
                    <td> 
                        @foreach (var proposition in question.LesPropositions)
                        {
                            <li>@proposition.Libelle</li>
                        }
                    </td>  
     
                    <td>@Html.ActionLink("Modifier " + question.Id, "UpdateQuestion", new { id = question.Id })</td>
                </tr>
            }
        </table>
    J'ai une erreur quand je fait "@foreach (var proposition in question.LesPropositions)"
    The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
    J'ai cherché sur le net mais je n'arrive pas à comprendre les réponses...

    Pouvez-vous m'aider?
    Merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Salut,

    Il nous manque le plus important le "controller" pour voir comment tu charges tes données... (Utilises-tu EntityFramework)

  3. #3
    Membre éclairé Avatar de kratoce
    Homme Profil pro
    Apprenti
    Inscrit en
    Octobre 2012
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Octobre 2012
    Messages : 270
    Par défaut
    Oups !
    Oui j'utilise EntityFramework en code first.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        public class QuestionController : Controller
        {
            // GET: Question
            public ActionResult Index()
            {
                using (IDal dal = new Dal())
                {
                    List<Question> lesQuestions = dal.GetAllQuestions();
                    return View(lesQuestions);
                }
            }
        }
    Edit:
    Je rajoute le DAL si besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            public List<Question> GetAllQuestions()
            {
                return bdd.Question.ToList();
            }

  4. #4
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Ok, donc problème courant avec EntityFramework.

    Vu que ton "DbContext" a été disposé avant la génération de la vue tu ne peut pas utiliser le chargement de données différé (LazyLoading).
    Et le fait d'utiliser "ToList" dans ta DAL => La requête est exécutée à ce moment.

    Le plus simple est dans ta DAL de charger ton objet au complet.

    Comment procéder :
    Importer le namespace "System.Data.entity" (Ajouter une référence)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Data.Entity;
    Et dans ta DAL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
             using System.Data.Entity;
             ....        
             public List<Question> GetAllQuestions()
            {
                return bdd.Question.Include(q => q.LesPropositions).ToList();
            }

  5. #5
    Membre éclairé Avatar de kratoce
    Homme Profil pro
    Apprenti
    Inscrit en
    Octobre 2012
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Octobre 2012
    Messages : 270
    Par défaut
    PARFAIT !

    Merci beaucoup pour l'aide rapide et pour les explications claires qui vont avec

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/02/2007, 15h04
  2. Réponses: 5
    Dernier message: 23/11/2006, 15h52
  3. Réponses: 3
    Dernier message: 13/07/2006, 15h48
  4. [VisualC++6.0]Object Array dans un ListBox
    Par thomfort dans le forum MFC
    Réponses: 16
    Dernier message: 16/05/2006, 18h37
  5. object file dans un vecteur
    Par chti_juanito dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 09/05/2006, 09h42

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