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 Discussion :

ASP NET MVC - Repository et informations à transmettre à la vue


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 189
    Points : 113
    Points
    113
    Par défaut ASP NET MVC - Repository et informations à transmettre à la vue
    Bonjour,

    Je suis en train d'implémenter Repository.
    J'avais un contrôleur qui utilisait 'ViewData' pour transmettre à ma vue l'ID de l'utilisateur.

    Ancien 'ArticlesController.cs'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            public IActionResult AjoutArticle()
            {
    
                ViewData["ApplicationUserId"] = new SelectList(_context.Users, "Id", "Id");
    
                return View();
    
            }
    Avec Repository, le contrôleur n'a plus accès au contexte qui se retrouve dans 'ArticlesRepository.cs'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            public void CreateArticle(Articles article)
            {
                _context.Articles.Add(article);
     
            }
    Nouveau 'ArticlesController.cs'
    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 ArticlesController : Controller
        {
            private readonly IArticlesRepository _repo;
    
            public ArticlesController(IArticlesRepository repo)
            {
                _repo = repo;
            }
    
            public IActionResult Create()
            {
                ViewData["ApplicationUserId"] = new SelectList(_context.Users, "Id", "Id"); //<-- _context n'existe pas dans le contexte actuel
                return View();
            }
    }
    Je ne trouve pas comment faire pour transmettre les mêmes informations à ma vue.
    Merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 805
    Points : 5 604
    Points
    5 604
    Par défaut
    Tu l'as dit toi même, le contexte se trouve dans le repository.

    Il faut donc un repository pour les Users.
    Cela peut tout à fait être le même que celui des articles, ou un complètement séparé.
    C'est un choix à faire au départ.

    Dans ce repository, il faut écrire une méthode pour accéder pour accéder à la liste des utilisateurs.
    Puis transmettre ce repository à ton contrôleur de la même manière que celui des articles si besoin.

  3. #3
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 189
    Points : 113
    Points
    113
    Par défaut
    de la même manière que celui des articles
    La solution était effectivement devant mes yeux.
    Parfois une simple indication, un conseil, suffit pour la trouver.
    Surtout quand on passe des heures à appréhender de nouveaux concepts.
    Merci Popo !

    J'avais deux lignes à remplacer dans mon contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                ViewData["ApplicationUserId"] = new SelectList(_context.Users, "Id", "Id");
    et 
                ViewData["ApplicationUserId"] = new SelectList(_context.Users, "Id", "Id", article.ApplicationUserId);
    j'ai donc créé deux méthodes dans 'ArticlesRepository.cs' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            public SelectList  GetUser()
            {
                var idUser = new SelectList(_context.Users, "Id", "Id");
     
                return idUser;
            }
            public SelectList  GetUserWithArticle(Articles article)
            {
                var idUser = new SelectList(_context.Users, "Id", "Id", article.ApplicationUserId);
     
                return idUser;
            }
    et, dans 'IArticlesRepository.cs' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            SelectList GetUser();
            SelectList GetUserWithArticle(Articles article);
    Ce qui donne, dans le nouveau contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                ViewData["ApplicationUserId"] = _repo.GetUser();
    et 
                ViewData["ApplicationUserId"] = _repo.GetUserWithArticle(article);
    Ça fonctionne.
    Merci

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

Discussions similaires

  1. [Débutant] Afficher les informations d'utilisateur courant ASP.NET MVC Entity framework
    Par risutsukoo dans le forum Développement Web avec .NET
    Réponses: 0
    Dernier message: 11/05/2015, 22h15
  2. [ASP.NET MVC] C'est quoi ?
    Par DranDane dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/09/2008, 12h48
  3. ASP.NET MVC Preview 4
    Par hollywood dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 22/07/2008, 12h57
  4. Framework ASP.NET MVC
    Par superbobo dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 02/07/2008, 17h11
  5. ASP.NET MVC Preview 2
    Par cereal59 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 04/04/2008, 17h41

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