Bonjour à tous,
J'ai un petit souci avec l'appel asynchrone de méthodes du controller avec des paramètres...
Je m'explique.
Voici mon objet que je passe en paramètre :
Cet objet RestaurantVoucherTotal contient une liste de RestaurantVoucher, dont voici sa définition :
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 /// <summary> /// Objet RestaurantVoucherTotal : Total des tickets restaurant /// </summary> [Serializable] public class RestaurantVoucherTotal { /// <summary> /// Id des montants totaux des tickets restaurants /// </summary> public int Id { get; set; } /// <summary> /// Nombre total de tickets restaurant /// </summary> public int NumberTotal { get; set; } /// <summary> /// Montant total de ticket restaurant /// </summary> public string AmountTotal { get; set; } /// <summary> /// Liste de Tickets restaurant /// </summary> public IEnumerable<RestaurantVoucher> RestaurantVoucherList { get; set; } }
Voici mon controller (pas encore implémenté, il retourne juste le paramètre...) :
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 /// <summary> /// RestaurantVoucher Class : Ticket Restaurant /// </summary> [Serializable] public class RestaurantVoucher { /// <summary> /// Id du ticket Restaurant /// </summary> public int Id { get; set; } /// <summary> /// Nom de l'émetteur /// </summary> public string Name { get; set; } /// <summary> /// Valeur d'un titre restaurant /// </summary> public int Value { get; set; } /// <summary> /// Nombre de titre restaurant /// </summary> public int Number { get; set; } /// <summary> /// Montant calculé automatiquement /// </summary> public string Amount { get; set; } }
Maintenant, au niveau de ma vue, j'utilise $.ajax pour envoyer la requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /// <summary> /// Valide une entrée de tickets restaurant /// </summary> /// <param name="datas">Liste de tickets restaurant à ajouter</param> /// <returns>Les tickets restaurant enregistrés</returns> [HttpPost] public ActionResult ValidateRestaurantVoucher(RestaurantVoucherTotal datas) { return Json(datas); }
Il faut que je lui passe des données, donc j'essaie de construire avant un objet JSON et de le passer en paramètre, j'arrive à remplir le "NumberTotal" et le "AmountTotal" de mon objet RestaurantVoucherTotal, mais la liste de RestaurantVoucher est soit null, soit contient les X données que je lui passe, mais chaque ligne de ma liste a ses données nulles ou égales à 0 suivant les méthodes que j'essaie...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $.ajax({ type: 'POST', url: '<%=Url.Action("ValidateRestaurantVoucher", "CashBook") %>', data: ...., dataType: "json", traditional: true, success: function(data) { // Code pour la réussite de la requête } }, error: function() { // Code en cas d'erreur de ma requête } });
Voici comment j'essaie de passer les données :
Toutes les récupérations de variables remontent bien une valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 var nbRestaurantVoucherTotal = $("#txtTotalNbRestaurantVoucher").val(); var amountTotal = $("#txtTotalMontantRestaurantVoucher").val(); var voucher = { RestaurantVoucherList: {} }; $('table tr.row').each(function(index) { voucher.RestaurantVoucherList[index] = ({ 'Value': $(this).children().nextAll().eq(0).text(), 'Number': parseInt($(this).children().nextAll().eq(1).text()), 'Amount': $(this).children().nextAll().eq(2).text() }); }); voucher.NumberTotal = nbRestaurantVoucherTotal; voucher.AmountTotal = amountTotal;
J'ai essayé avec une liste de int ou de string, et dans ce cas cela fonctionne...
Auriez-vous une solution pour remplir ma liste de RestaurantVoucher depuis le javascript ?
Merci d'avance pour votre aide !
Partager