Passer un viewmodel depuis une vue à un contrôleur
Bonsoir,
J'ai la classe suivante, ViewModelListeVoeux que je passe sans problème depuis mon contrôleur à ma vue :
Code:
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" }
};
}
} |
Je peux donc manipuler l'objet dans ma vue sans problème.
Mais en sens inverse lorsque je tente de passer l'objet ViewModel modifié à mon contrôleur, il est vide.
Voici ma vue :
Code:
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>
} |
Et voici mon contrôleur :
Code:
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);
} |
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é.
Comment faire donc pour que VMListeVoeux corresponde à ce que j'ai modifié ?
Merci d'avance à chacun.