JSON - Envoyer une liste d'objets au controller MVC 2
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 :
Code:
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; }
} |
Cet objet RestaurantVoucherTotal contient une liste de RestaurantVoucher, dont voici sa définition :
Code:
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; }
} |
Voici mon controller (pas encore implémenté, il retourne juste le paramètre...) :
Code:
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);
} |
Maintenant, au niveau de ma vue, j'utilise $.ajax pour envoyer la requête :
Code:
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
}
}); |
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...
Voici comment j'essaie de passer les données :
Code:
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; |
Toutes les récupérations de variables remontent bien une valeur.
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 !