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