Bonjour à tous
Après plusieurs recherches et essais, je me tourne vers vous
J'ai une view qui affiche la liste des albums d'une série, avec une checkbox sur chaque album indiquant si je l'ai.
Le binding de model fonctionne bien avec les HtmlHelper quand j'appelle cette vue via un view model et lorsque je submit le formulaire, les nouvelles valeurs de checkbox sont bien récupérés par le contrôleur
Cependant lorsque je remplace le htmlhelper de ma checkbox par une balise input (obligé pour faire du CSS), mes checkbox ont bien la bonne valeur sur la vue, mais lorsque je soumet le viewmodel à mon contrôleur, les nouvelles valeurs des ces checkbox ne sont pas pris en compte.
Qu'est ce que j'aurai oublié dans mon input ?
Voici le viewmodel, tout simple :
La classe album
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class ListeAlbumsSerieViewModel : BaseViewModel { public int IdSerie { get; set; } public List<Album> Albums { get; set; } public ListeAlbumsSerieViewModel() { Albums = new List<Album>(); } }
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
33
34
35
36 public class Album { public virtual int NumAlbum { get; set; } public virtual Serie Serie { get; set; } public virtual string Titre { get; set; } public virtual string Je_L_Ai_O_N{ get; set; } public virtual byte[] Image { get; set; } [NotMapped] public virtual bool Je_Lai { get; set; } [NotMapped] public virtual string ImageData { get { string imreBase64Data = Convert.ToBase64String(Image); return string.Format("data:image/png;base64,{0}", imreBase64Data); } } public override bool Equals(object obj) { Album a = obj as Album; if (a == null) return false; return NumAlbum == a.NumAlbum && Serie.Id == a.Serie.Id; } public override int GetHashCode() { return (Serie.Id * 100) + NumAlbum; } }
Et la vue
Code CSHTML : 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
33
34
35
36
37
38
39
40
41
42
43 <ul class="list-group"> @for (int i = 0; i < Model.Albums.Count; i++) { <li class="list-group-item"> <div class="row"> <div class="col-lg-2"> <div> <img width="125" src="@Model.Albums[i].ImageData" /> </div> </div> <div class="col-lg-8"> <h3>@Model.Albums[i].Serie.Nom</h3> <h4 class="text-muted">@Model.Albums[i].NumAlbum - @Model.Albums[i].Titre</h4> </div> @Html.HiddenFor(a => @Model.Albums[i].NumAlbum) @* @Html.CheckBoxFor(a => @Model.Albums[i].Je_Lai)*@ <div class="col-lg-2"> <label> <input type="checkbox" class="option-input radio" name="Albums[@i].Je_Lai" value="@Model.Albums[i].Je_Lai" @(Model.Albums[i].Je_Lai ? "checked" : "") /> </label> </div> </div> </li> } </ul>
Merci beaucoup !
Partager