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 :

Problème récupération List dans ActionResult


Sujet :

ASP.NET MVC

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 26
    Par défaut Problème récupération List dans ActionResult
    Bonjour,

    Voilà, je suis entrain de découvrir MVC dans les applications .NET et je me heurte à un problème.

    Je n'arrive pas à récupérer une List<..> lors de l'appelle de mon contrôleur après un appel Post.

    Je m’explique :

    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
    30
    31
    32
     
    @model Test_MVC_3.Controllers.Customer
    @{
        ViewBag.Title = "Register";
    }
    ...
            @using (Html.BeginForm())
            {
                Html.ValidationSummary(true);
     
                <fieldset>
                    <legend>Fields</legend>
                    <div class="editor-label">
                        @Html.LabelFor(model => model.Nom)
                    </div>
                    <div class="editor-field">
                        @Html.TextBoxFor(model => model.Nom)
                        @Html.ValidationMessageFor(model => model.Nom)
                    </div>
                    @{Html.RenderPartial("RegisterCompte", Model.Compte);}
                    @foreach (Test_MVC_3.Controllers.Address item in Model.Address)
                    {
                        Html.RenderPartial("RegisterAdresse", item);
                    }
                    <p>
                        <input type="submit" value="Create" />
                    </p>
                </fieldset>
            }
        </div>
    </body>
    </html>
    Voici les vues partielles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @model Test_MVC_3.Controllers.Address
     
     
     
         <div class="editor-label">
            @Html.LabelFor(model => model.Number)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.Number)
            @Html.ValidationMessageFor(model => model.Number)
        </div>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    @model Test_MVC_3.Controllers.Compte
     
    <div class="editor-label">
        @Html.LabelFor(model => model.NomCompte)
    </div>
    <div class="editor-field">
        @Html.TextBoxFor(model => model.NomCompte)
        @Html.ValidationMessageFor(model => model.NomCompte)
    </div>
    et enfin voici mon 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
     
            public ActionResult Register()
            {
                Customer c = new Customer();
                c.Address = new List<Address>();
                c.Address.Add(new Address());
                c.Address.Add(new Address());
                c.Compte = new Compte();
     
                return View(c);
            }
     
            [HttpPost]
            public ActionResult Register(Customer c, Compte c2,  List<Address> a)
            {
     
                c.Compte = c2;
                c.Address = (List<Address>)a;
                return View(c);
            }

    Lors de l'appel de la méthode Register après validation du formulaire, le paramètre c (Customer) vaut bien quelques chose, Le parametre c2 (Compte) vaut bien quelques chose mais par contre je n'arrive pas à récupérer la liste d'adresse. J'ai essayé avec une table, une IList, ... je n'arrive à rien.

    Si quelqu'un à une piste je le remercie par avance.

    J’espère aussi avoir été claire

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    mvc n'est pas pratique pour poster des listes, il faut avoir un html généré très spécifique de la forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <input type=.....
    name="Address[0].Number"
    id="Address[0]_Number"
    />
    Ce que je fait actuellement: je construit mes input à la main...

    Ce que tu peux faire c'est essayer ce lien que je viens de découvrir (je n'ai donc rien testé): http://blog.stevensanderson.com/2010...t-mvc-2-style/

    A noter: tes contrôles générés "Address[0]" doivent avoir leur index qui commence à 0 et les index ne doivent pas avoir de trous, Si tu supprimes des item avec du javascript il faudra donc mettre à jour les index.

    Enfin pour le type de la collection postée nous utilisons IEnumerable, mais List, IList etc devraient passer.

    bonne chance et fais nous part de tes retours

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 26
    Par défaut
    Merci pour ta réponse, Ton lien répond tout à fait à ma question.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/07/2010, 17h05
  2. Réponses: 2
    Dernier message: 05/03/2009, 16h55
  3. Problème avec "list" dans c++
    Par KINGINFO dans le forum SL & STL
    Réponses: 4
    Dernier message: 10/12/2008, 16h41
  4. Problème récupération texte dans des balises HTML
    Par stansoad0108 dans le forum Langage
    Réponses: 20
    Dernier message: 24/06/2008, 15h55
  5. [Smarty] Problème récupération variable dans un for
    Par slaxsystem dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 02/05/2007, 17h10

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