Bonsoir,
J'ai la classe suivante, ViewModelListeVoeux que je passe sans problème depuis mon contrôleur à ma vue :
Je peux donc manipuler l'objet dans ma vue sans problème.
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 public class ViewModelListeVoeux { public List<Produit> ListeVoeux { get; set; } public List<Enseigne> ListeEnseignes { get; set; } public ViewModelListeVoeux() { ListeVoeux = new List<Produit>(); ListeEnseignes = new List<Enseigne> { new Enseigne{Nom = "Fnac", Photo = "Fnac.jpg" }, ... new Enseigne{Nom = "Amazon", Photo = "amazon.jpg" } }; } }
Mais en sens inverse lorsque je tente de passer l'objet ViewModel modifié à mon contrôleur, il est vide.
Voici ma vue :
Et voici mon contrôleur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 @using (Html.BeginForm("EditerListeVoeux", "ListeVoeux")) { @foreach (Produit p in Model.ListeProduits) { <tr><td><input type="checkbox" name="CheckBoxesProduitChoisi" value="@p.Id" /></td><td>@p.Nom </td><td>@p.Marque</td><td>@p.Prix</td><td>@p.NomPhoto</td></tr> }
Autant je reçois bien un tableau des ID des cases à cocher sélectionnées et je peux bricoler avec, autant je souhaiterai recevoir directement en paramètre de mon contrôleur mon ViewModel modifié.
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 public ViewResult EditerListeVoeux(int[] CheckBoxesProduitChoisi, ViewModelListeVoeux VMlisteVoeux) { // ViewModelListeProduits modèleLP = new ViewModelListeProduits(); /* foreach (Produit p in modèleLP.ListeProduits) { for (int i = 0; i < CheckBoxesProduitChoisi.Count(); i++) { if (p.Id == CheckBoxesProduitChoisi[i]) { VMlisteVoeux.ListeVoeux.Add(p); } } } */ return View("EditerListeVoeux", VMlisteVoeux); }
Comment faire donc pour que VMListeVoeux corresponde à ce que j'ai modifié ?
Merci d'avance à chacun.
Partager