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 :

Html.DropDownListFor MVC erreur


Sujet :

ASP.NET MVC

  1. #1
    Membre averti Avatar de clubist
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 301
    Points
    301
    Par défaut Html.DropDownListFor MVC erreur
    Bonjour,

    pour persister un nouveau utilisateur dans ma base de données j'ai ajouté une méthode de type GET inscrireUser() dans le controlleur pour construire la formulaire puis j'ai ajouté une autre méthode qui va être appelé lors de l'envoi des données au serveur (Méthode avec l'annotation POST)

    le problème que je suis pas arrivée à comprendre comment envoyer la valeur sélectionné dans une liste de choix de sexe par l'utilisateur.

    bon j'ai pu le construire lors de GET mais une erreur se déclenche lors de l'envoi de formulaire

    pour être plus claire voila mon code

    c'est la méthode invoquée lors la demande de la page d'ajout de nouveau 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
     
     public ActionResult inscrireUser() {
     
               userProfile user = new userProfile();
               ViewData["Genders"] = new SelectList(new List<String> { "Male", "Female" },user.profilegender);
     
                //List<String> { "Male", "Female" };
               return View(user);
     
            }
     
            [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult inscrireUser(userProfile user)
            {
                try
                {
                    db.AddTouserProfile(user);
                    db.SaveChanges();
     
                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
            }
    c le formulaire ou j'ai ajouté mon DropDownListFor

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <% using (Html.BeginForm()) {%>
            <%: Html.ValidationSummary(true) %>
     
    <td><%: Html.Label("sexe") %></td>
                    <td><%= Html.DropDownListFor(model => model.profilegender, ViewData["Genders"] as SelectList, Model.profilegender)%></td>
                    <td><%: Html.ValidationMessageFor(model => model.profilegender) %></td>
                </tr>
     
    <p>
                    <input type="submit" value="S'inscrire" />
                </p>
     
        <% } %>
    et le serveur déclenche cet érreur:
    Server Error in '/' Application.
    There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'profilegender'.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.InvalidOperationException: There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'profilegender'.

    Source Error:

    Line 27: <tr>
    Line 28: <td><%: Html.Label("sexe") %></td>
    Line 29: <td><%= Html.DropDownListFor(model => model.profilegender , ViewData["Genders"] as SelectList)%></td>
    Line 30: <td><%: Html.ValidationMessageFor(model => model.profilegender) %></td>
    Line 31: </tr>


    Source File: c:\Documents and Settings\Mongi\Mes documents\Visual Studio 2010\Projects\MvcApplication6\MvcApplication6\Views\User\inscrireUser.aspx Line: 29

  2. #2
    Membre averti Avatar de clubist
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 301
    Points
    301
    Par défaut List<SelectListItem> et List<SelectListItem>
    Bonjour,

    Bon j'ai chercher un peu sur le net et j'ai constaté qu'il faut tout simplement créer une liste d'objets de type SelectListItem à laquelle on ajoute des SelectListItem instancié avec un clé et une valeure
    puis on passe cette liste comme 2ème paramètre à notre Html.DropDownListFor et voila; le code s'exécute comme j'ai voulu.


    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
     
    List<SelectListItem> GendersListItems = new List<SelectListItem>();
                                GendersListItems.Add(new SelectListItem   
                                {  
                                    Text = "séléctionner votre sexe",  
                                    Value = "",  
                                    Selected = true  
                                });
                                GendersListItems.Add(new SelectListItem  
                                {  
                                    Text = "Male",  
                                    Value = "0"  
                                });
                                GendersListItems.Add(new SelectListItem  
                                {  
                                    Text = "Female",  
                                    Value = "1"  
                                });                          
                             %>           
                    <%: Html.Label("sexe") %>
                    <%= Html.DropDownListFor(model => model.profilegender, GendersListItems)%>
                    <%: Html.ValidationMessageFor(model => model.profilegender) %>

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Ca c'est + propre : utilise "SelectList" qui va automatiquement créer ton enumerable de SelectListItem (Genders = IEnumerable<Gender> dans ton Model )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%= Html.DropDownListFor(
    m=> m.profilegender, 
    new SelectList( Model.Genders ) %>
    (note : il te faudra utiliser datavaluefiled et datatextfield )

    Si tu veux présélectionner une valeur, il te faut une référence vers le Gender sélectionné dans ton Model :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%= Html.DropDownListFor(
    m=> m.profilegender, 
    new SelectList( Model.Genders, Model.SelectedGender ) %>
    Sinon en C# toutes les classes, méthodes et Propriétés commencent par une majuscule (il n'est pas recommandé d'exposer les membres )

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

Discussions similaires

  1. [SPRING MVC]Erreur sur un Integer dans un Validator
    Par manuzinho dans le forum Spring Web
    Réponses: 2
    Dernier message: 31/08/2007, 15h58
  2. Réponses: 11
    Dernier message: 28/08/2007, 12h06
  3. [Spring MVC] erreur dans popup !
    Par Tail dans le forum Spring Web
    Réponses: 1
    Dernier message: 02/07/2007, 14h31
  4. [MVC]Erreurs 404, problème de routeur
    Par Bast_ dans le forum MVC
    Réponses: 14
    Dernier message: 28/06/2007, 03h57
  5. [POO] Formulaire HTML + fonction JS = Erreur
    Par bdaboah dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/11/2004, 21h59

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