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 :

Multiple @Model dans une page MVC c#


Sujet :

ASP.NET

  1. #1
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Conseiller technique ELec
    Inscrit en
    janvier 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Conseiller technique ELec
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 495
    Points : 313
    Points
    313
    Par défaut Multiple @Model dans une page MVC c#
    Bonjour à tous,

    Je bloque devant ce message d'erreur (Erreur : CS0246 : Le nom de type ou d'espace de noms 'RetourModel' est introuvable (vous manque-t-il une directive using ou une référence d'assembly*?)) :
    Je m'explique :

    - A la base dans ma vue j'ai cette déclaration en haut de ma page (@Model Client) ET dans le Controller return View(GestionClients);....Ca fonctionne.
    - Dans une autre création dans ma vue j'ai cette déclaration en haut de ma page (@model IEnumerable<Produit>) ET dans le Controller return View(db.Tbl_produits.ToList());....Ca fonctionne.

    Ceci dit, maintenant je souhaite réunir les deux @Model dans une seule vue.
    Donc je déclare une class que je nomme (MultiModels), voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    using System.Collections.Generic;
    namespace Site_LsB_MVC.Models
    {
        public class MultiModels
        {
            public IEnumerable<Produit> Produits { get; set; }
            public Client Clients { get; set; }
        }
    }
    Dans mon Controller j'ai ce qui suit :

    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
     
      public class ProdDbContext : Controller
        {
            private Data.ProdDbContext db = new Data.ProdDbContext();
             public static Client cMain;
     
         public ActionResult Index()
            {
                Client GestionClients = new Client();
                cMain = new Client();
                GestionClients.Clients = cMain.Clients = FillList();
     
     
                MultiModels RetourModel = new MultiModels
                {Produits = db.Tbl_produits.ToList(), Clients = GestionClients};
     
     
                return View(RetourModel);
     
            }
    }
    Et dans ma vue je note : @model RetourModel
    Aucun soucis sur les déclarations de mes inputs et les @Html.TextAreaFor, n'y sur le @foreach (var item in Model.Produits).

    Par contre dans ma liste d'erreurs j'ai deux codes CS0246 comme indiqué en haut de mon message !

    Me manque t'il une déclaration quelconque ?

    Merci d'avance pour votre aide.

    Bruno

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    2 227
    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 227
    Points : 4 257
    Points
    4 257
    Par défaut
    Je ne pense pas que tu puisse définir deux modèle pour la même vue.
    Il faut créer un troisième modèle avec les deux contenu et faire le lien entre ces deux contenu dans le contrôleur

  3. #3
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Conseiller technique ELec
    Inscrit en
    janvier 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Conseiller technique ELec
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 495
    Points : 313
    Points
    313
    Par défaut
    Bonjour Popo,

    Il est possible d'ajouter plusieurs model dans une page...
    Mon erreur était :

    Et dans ma vue je note : @model RetourModel

    Dans ma vue il faut remplacer cette partie par :

    Soit par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     @model nomduprojet.Models.MultiModels
    ou alors comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @using nomduprojet.Models;
    @model MultiModels
    Et ajouter le nom de la déclaration class MultiModels, dans mon cas il s'agit de Clients
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Html.TextAreaFor(m => m.Clients.NomdeMonTextarea

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

Discussions similaires

  1. Multiples DataTable dans une page
    Par singman dans le forum jQuery
    Réponses: 3
    Dernier message: 07/05/2017, 11h28
  2. Structure du Model dans une architecture MVC
    Par Beowulf59 dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 01/05/2015, 08h00
  3. Utiliser le Client Object Model dans une page ASP.Net
    Par jubourbon dans le forum Développement Sharepoint
    Réponses: 0
    Dernier message: 06/12/2012, 17h03
  4. [MVC] Multiple form dans une page
    Par zulot dans le forum Spring Web
    Réponses: 0
    Dernier message: 23/03/2011, 09h52
  5. Réponses: 1
    Dernier message: 28/11/2007, 12h52

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