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 :

MVC 4 Vue : afficher les tables liées d'un enregistrement. [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Points : 48
    Points
    48
    Par défaut MVC 4 Vue : afficher les tables liées d'un enregistrement.
    Bonjour,

    Mon problème est relativement simple :

    J'ai une table CLIENTS classique. J'ai également deux autres tables CONTACTS et ADRESSES liées à cette table CLIENTS par l'ID du client.

    J'ai géré toute la partie CLIENTS à l'aide du Framework qui m'a créé le contrôleur et les vues nécessaires à la gestion de mes enregistrements CLIENTS.

    Vue Index : liste de mes clients
    Vue Détails : détail d'un client.

    Dans ma vue Détails je voudrai rajouter deux webgrids qui affichent les enregistrements liés au client (CONTACTS et ADRESSES). Comment faire pour passer ces informations à la vue depuis le controleur (ou ailleurs) ?

    D'avance merci.

    Cordialement

  2. #2
    Membre confirmé Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Via le Model, voire même un ViewModel spécifique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class ClientModel 
    {
      // propriétés de ClientModel
      [...]
     
      public IEnumerable<ContactModel> Contacts { get; set;}
      public IEnumerable<AdresseModel> Adresses { get; set;}
    }
    Dans le contrôleur tu remplis avec les données et tu envois le tout à la vue.
    Christophe B.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    D'abord merci de ta réponse.

    Citation Envoyé par elbj Voir le message
    Via le Model, voire même un ViewModel spécifique.

    Dans le contrôleur tu remplis avec les données et tu envois le tout à la vue.
    C'est justement là que je bloque. Mes tables sont modélisées via ADO.NET Entity Data Model. Dans mon contrôleur, pour l'instant j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // GET: /Client/Details/5
     
            public ActionResult Details(int id = 0)
            {
                CLIENTS clients = db.CLIENTS.Find(id);
                if (clients == null)
                {
                    return HttpNotFound();
                }
     
                return View(clients);
            }
    Je ne sais pas comment rajouter ma liste de contacts lié au client par exemple à la vue. Je suis un peu réticent à faire une seule requête surtout si je dois rajouter une autre table en plus.

    Merci de votre aide et désolé de poser des questions qui semblent évidentes mais je suis un peu perdu dans la jungle de la documentation qui existe sur le net.

    Cordialement

  4. #4
    Membre confirmé Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Eh bien tu pourrais faire un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public ActionResult Details(int id = 0)
    {
      CLIENTS clients = db.CLIENTS.Find(id);
      if (clients == null)
      {
        return HttpNotFound();
      }
      ClientModel model = new ClientModel(clients); 
      return View(model);
    }
    ton ClientModel :

    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
     
    public class ClientModel 
    {
      // propriétés de ClientModel
      [...]
     
      public IEnumerable<ContactModel> Contacts { get; set;}
      public IEnumerable<AdresseModel> Adresses { get; set;}
     
      public ClientModel (CLIENTS client)
      {
        this.Id = client.Id;
        // suite des propriétés
        // remplissage de Contacts et Adresses
      }
    }
    sachant que ta vue doit attendre un model de type ClientModel.
    Christophe B.

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Points : 48
    Points
    48
    Par défaut
    Désolé elbj mais c'est désespérant à quel point je ne comprends pas ces histoires de modèles, sans parler du fait que je découvre aussi le C#...

    mes modèles de base (prenons que deux tables pour faire simple) :

    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
     
     
    public partial class CLIENTS
        {
            public int CL_ID { get; set; }
            public string CL_NOM { get; set; }
     
            ...
     
    }
     
    public partial class CONTACTS
        {
            public int CC_ID { get; set; }
            public string CC_NOM { get; set; }
            ...
            public int CL_ID { get; set; } => clé client
    }
    Je ne pige pas comment créer ce viewmodel et/ou alimenter la vue pour par exemple afficher le nom de tous les contacts d'un client dans une vue.

    Merci de votre aide.

  6. #6
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    Si tu veux afficher les adresses et les contacts d'un client, tu dois d'abord récupérer ces informations :
    Parmi tous les contacts, prendre ceux dont l'Id du client est égale à l'Id d'un client.

    Même chose pour les adresses.
    Une fois ces informations récupérées, il suffit de les rassembler dans un unique model comme dit plus haut et de passer ce model à la vue.

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par yonpo Voir le message
    Si tu veux afficher les adresses et les contacts d'un client, tu dois d'abord récupérer ces informations :
    ok mais où ? Dans le contrôleur ? Dans les modèles ? Comment ?

    Mes modèles ont été générés par VS par rapport à mes tables de base de données SQL Server. Du coup c'est vrai que je n'ose pas trop toucher mes modèles et que dans mon esprit tout se passe dans les contrôleurs (requêtes) pour sélectionner mes datas, les triturer pour les passer aux vues.

    Citation Envoyé par yonpo Voir le message
    Une fois ces informations récupérées, il suffit de les rassembler dans un unique model comme dit plus haut et de passer ce model à la vue.
    C'est là que mon cheminement de pensée de noob ne te suit pas. Je suis clairement resté dans une vision ASP du développement Web ...

    Cordialement

  8. #8
    Membre confirmé Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Peut-être essayes-tu d'aller trop vite alors. Il me semble qu'il te manque quelques bases et ce serait inutile de te former par message sur ce forum.
    Tache de suivre quelques tutoriels avant de te lancer dans un projet nouveau.
    Christophe B.

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Points : 48
    Points
    48
    Par défaut
    bonjour,

    tu as raison, je ne le cache pas je suis débutant en asp.net mvc.

    quant aux tutoriels j'en ai suivi quelques uns mais généralement cela se limite au basic : modèle simple, controleur unique associé à une vue fortement typée et je n'en trouve pas pour l'étape "au-dessus".

    Je n'arrive pas à trouver une source importante d'informations et de tutoriels dans la jungle du net (même en anglais). Voilà pourquoi je pose beaucoup de questions sur le forum.

    Il faut avouer aussi que le fait de pouvoir faire la même chose de 25 façons différentes n'aide pas à la compréhension.

    Si tu as des liens de tutoriels, je suis preneur.

    Cordialement

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Points : 48
    Points
    48
    Par défaut
    bonjour,

    j'ai trouvé une solution à mon problème notamment grâce à ce lien :

    http://www.codeproject.com/Articles/...-ASP-NET-MVC-M

    Si ça peut aider d'autres personnes...

    Merci à ceux qui m'ont aidé.

    Cordialement

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

Discussions similaires

  1. [AC-2007] Afficher les tables liées masquées
    Par Rayan1 dans le forum Access
    Réponses: 3
    Dernier message: 11/05/2015, 20h00
  2. Réponses: 14
    Dernier message: 12/07/2006, 16h26
  3. Formulaire affichant deux tables liées à une troisième
    Par Mimi-des-îles dans le forum Access
    Réponses: 1
    Dernier message: 23/02/2006, 13h47
  4. afficher les tables d'une BDD
    Par Samanta dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/07/2005, 18h09
  5. Réponses: 8
    Dernier message: 05/04/2005, 22h17

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