Il me manque quelque chose ici. J'ai ce JavaScript jQuery:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
data: {
orderedIds: orderedIds,
unixTimeMs: new Date().getTime()
}
});
Où orderedIds
est un tableau de nombres JavaScript (par exemple var orderedIds = [1, 2]
).
La méthode de gestion Controller
est:
[HttpPost]
public void UpdateNoteOrder(long[] orderedIds, long unixTimeMs)
{
...
}
Lorsque je mets une Debugger.Break()
dans UpdateNoteOrder()
, orderedIds
est null
dans la fenêtre de surveillance. (unixTimeMs
, cependant, a une valeur numérique.)
Comment passer le tableau de nombres via $.ajax()
de telle sorte que orderedIds
soit un long[]
Dans mon contrôleur?
Réglez simplement le paramètre traditional
sur true
:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
traditional: true,
data: {
orderedIds: orderedIds,
unixTimeMs: new Date().getTime()
}
});
Depuis jquery 1.4, ce paramètre existe car le mécanisme de sérialisation des objets en paramètres de requête a changé.
vous devrez transformer les ID commandés en un tableau de paramètres, sinon le contrôleur ne le verra pas
$.param({ orderedIds: orderedIds });
dans votre code:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
data: {
orderedIds: $.param({ orderedIds: orderedIds }),
unixTimeMs: new Date().getTime()
}
});