Bonjour,
sur mon projet ASP.NET MVC j'ai une partie qui récupère des valeurs en base dans des inputs,
j'aimerais pouvoir offrir la possibilité à l'utilisateur de mettre à jour les informations de ces champs dynamiques.
Mon contrôleur se charge donc de récupérer les infos en base puis de retourner une vue partielle avec le modèle correspondant,
jusque là ça va mais dès que je souhaite faire le contraire c'est à dire envoyer le modèle avec les nouvelles valeurs au contrôleur,
mon modèle est systématiquement null.
Contrôleur :
Vue partielle :
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 [HttpGet] public ActionResult GetLigneFraisForfait() { try { string moisActuel = DateTime.Now.Month.ToString("d2") + DateTime.Now.Year; HttpResponseMessage GetFraisForfaitsAsync = GlobalVariables.WebApiClient.GetAsync($"api/FraisForfait/{Session["IdVisiteur"]}/{moisActuel}").Result; if (GetFraisForfaitsAsync.IsSuccessStatusCode) { var lesFraisForfaits = GetFraisForfaitsAsync.Content.ReadAsAsync<List<FraisForfait>>().Result; SaisieViewModel viewModel = new SaisieViewModel { LesFraisForfaits = lesFraisForfaits }; return PartialView("_SaisieFraisForfait", viewModel); } if (GetFraisForfaitsAsync.StatusCode == HttpStatusCode.Unauthorized || GetFraisForfaitsAsync.StatusCode == HttpStatusCode.Forbidden) return Json(new {Message = "Vous ne disposez pas des droits suffisants pour effectuer cette action."}); return PartialView("_SaisieFraisForfait", new SaisieViewModel {LesFraisForfaits = new List<FraisForfait>()}); } catch (Exception) { return Json(new {Message = "Une exception non gérée est survenue lors de la mise à jour de vos informations."}); } }
Contrôleur (après la tentative de post) :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50 @model GSB_MVC.ViewModels.SaisieViewModel @{ Layout = null; } @if (Model.LesFraisForfaits != null) { using (Html.BeginForm("UpdateFraisForfait", "Saisie", FormMethod.Post)) { <div> @{ decimal Total = 0; int row = 0; } @foreach (var item in Model.LesFraisForfaits) { Total += item.Total; if (row == 0) { @:<div class="row"> } <div class="col"> <label for="@item.IdFraisForfait" class="control-label">@item.LibelleFraisForfait</label> <input type="text" class="form-control mb-3" name="@item.IdFraisForfait" placeholder="Nom" value="@item.Quantite" /> </div> if (row == 1) { row = 0; @:</div> } else { row++; } } <label for="txtTotal" class="control-label">Total (tarifs appliqués)</label> <input type="text" class="form-control" id="txtTotal" placeholder="Montant total" readonly value="@Total €" /> <br /> <div> <button id="btnMajFicheFrais" type="submit" class="btn btn-primary">Mettre à jour</button> </div> </div> } <script> $("#loadSpinnerSaisie").html(""); $("#btnMajFicheFrais").show(); </script> }
J'imagine que le problème vient de la vue partielle mais j'ai essayé plusieurs choses en vain..
Si éventuellement vous avez quelques pistes je suis preneur.
Merci.
Partager