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 :

Probleme pour afficher un objet dans la vue ?


Sujet :

ASP.NET MVC

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Par défaut Probleme pour afficher un objet dans la vue ?
    Bonjour,
    Voila mon objet possède une variable de type String et un selectListItem composé des différents rôles possible.
    J'aimerai afficher le pseudo de chaque personne ainsi que le selectListItem dans un dropdownlistbox...
    J'ai beau essayer dans tous les sens mais je n'y arrive pas :/.
    Voici ma class Modele Utilisateur:
    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    using System.Web.Mvc;
     
    namespace ASP.Models.Utilisateur
    {
        public class Utilisateur
        {
            [Required(ErrorMessage = "Le pseudo est obligatoire")]
            [Display(Name = "Pseudo")]
            public String Pseudo { get; set; }
     
            [Display(Name = "Roles")]
            public IList<SelectListItem> roles = new List<SelectListItem>();
            public IList<SelectListItem> Roles
            {
                get { return roles; }
                set { roles = value; }
            }
     
        }
    }
    Quand la personne se connecte sur la page je vais recuperer dans la base de donnée les pseudo et roles, je mets ensuite les rôles dans une liste.
    Voici le controleur:
    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
    public ActionResult Modifier()
            {
                Connection connection = new Connection();
                connection.creationConnexion();
                DbDataReader reader = connection.getBDAllPseudoRole();
                List<Utilisateur> utilisateurs=new List<Utilisateur>();
                Utilisateur utilisateur = null; ;
                if (reader.HasRows)//enregistrement existant
                {
                    while (reader.Read())
                    {
                        //Recuperer si une personne existe déjà ou pas dans la liste
                        Boolean flag = false;
                        foreach (Utilisateur utilisateurTemp in utilisateurs)
                        {
                            if (utilisateurTemp.Pseudo.Equals(Convert.ToString(reader[0])))
                            {
                                utilisateur = utilisateurTemp;
                                flag = true;
                            }
                        }
                        if(flag==false)    
                            utilisateur = new Utilisateur();
     
                        if (reader.GetValue(1) == DBNull.Value)//si la colonne 1 vaut null; cad la colonne des rôles
                        {
                            utilisateur.Pseudo = Convert.ToString(reader[0]);
                        }
                        else
                        {
                            utilisateur.Pseudo = Convert.ToString(reader[0]);
                            SelectListItem item = new SelectListItem();
                            item.Text = Convert.ToString(reader[1]);
                            item.Value = Convert.ToString(reader[1]);
                            utilisateur.Roles.Add(item);  
                        }
                        utilisateurs.Add(utilisateur);
                    }
    			}
    return View(utilisateurs);
    		}
    Et voici ma vue
    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
    @model ASP.Models.Utilisateur.Utilisateur
    @{
        ViewBag.Title = "Modifier";
    }
     
    <h2>Modifier</h2>
     
    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Utilisateur</legend>
     
            <div class="editor-label">
                @Html.LabelFor(utilisateur => utilisateur.Pseudo)
            </div>
            <div class="editor-field">
                @Html.EditorFor(utilisateur => utilisateur.Pseudo)
                @Html.ValidationMessageFor(utilisateur => utilisateur.Pseudo)
            </div>
     
            <div class="editor-label">
                @Html.DropDownList("roles", utilisateur => utilisateur.Roles)
            </div>
     
             <input type="submit" value="Connexion"/>
     
        </fieldset>
    }
    J'ai une sale erreur au niveau du dropdownList et je ne trouve pas de solution .
    Merci d'avance pour votre aide
    Cordialement,
    Zoners

  2. #2
    Membre expérimenté
    Avatar de Proteus91
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 150
    Par défaut
    Hello est ce que tu peux essayer le code suivant :

    Dans la page cshtml de ta vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @Html.DropDownList("TALISTE", null, new { @style = "width:99%;" })
    Dans la méthode de ton controleur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ViewBag.TALISTE = new SelectList(IEnumerable, "Valeur", "Affiché");
    Je n'ai pas de vs sous les yeux mais normalement ca devrai rouler. N'hesite pas a me contacter en cas de probleme. A+

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Par défaut
    Bonjour,
    Tous d'abord merci pour ton aide, j'ai essayé ta méthode comme ceci par rapport a mon code:
    Dans ma vue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @Html.DropDownList("rolesList", null, new { @style = "width:99%;" })
    Dans mon controleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ViewBag.rolesList = new SelectList(utilisateurs, "Valeur", "Affiché");
    Malheureusement j'ai cette erreur ci a l’exécution de la page:
    The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[SiteWebEmpty.Models.Utilisateur.Utilisateur]', but this dictionary requires a model item of type 'SiteWebEmpty.Models.Utilisateur.Utilisateur'.
    Merci d'avance pour l'aide.
    Cordialement,
    Zoners

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut
    J'ai exactement la même chose que toi et ça fonctionne bien sauf que j'ai pas de selectListItem dans mon modèle mais une liste classique.

    Modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [Display(Name = "Role")]
    public List<string> ListeRoles { get; set; }
    Contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //Aller chercher la liste des rôles 
    model.ListeRoles = ...
    return View("nomDeLaVue", model);
    Vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div class="editor-label">
      <p>Choisir un rôle et valider</p>
       @Html.DropDownListFor(m => m.ListeRoles, new SelectList(Model.ListeRoles))
    </div>

  5. #5
    Membre éprouvé
    Avatar de Crooby
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2011
    Messages : 65
    Par défaut
    Bonjour le problème vient du faite que le type de model associé à ta page est différent de celui passé par le controller.

    Le model est actuellement un objet simple alors que tu lui passe une liste par le controller.

    essaye mettre ça dans ta vue razor

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @model System.Collections.Generic.List<ASP.Models.Utilisateur.Utilisateur>

Discussions similaires

  1. [MySQL] Probleme pour afficher du contenu dans un div qui se repete
    Par design_57 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/11/2012, 07h23
  2. probleme pour afficher une image dans une jsp
    Par jean-pierre69380 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 10/06/2012, 12h35
  3. [Débutant] Probleme pour Afficher l'heure dans un textbox
    Par Alegreg dans le forum ASP.NET
    Réponses: 12
    Dernier message: 26/07/2011, 19h51
  4. [Base de donnée] BCB6 Probleme pour afficher une image dans un DBGrid
    Par o_live dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/12/2010, 10h07
  5. Probleme pour afficher des printf dans le main
    Par Battosaiii dans le forum C
    Réponses: 4
    Dernier message: 13/03/2006, 10h58

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