8
votes

JS INT Array to MVC3 Controller

J'ai une gamme de cordes dans JS. Tous les membres sont en réalité des nombres.
Mon contrôleur a un paramètre Int [].

Je l'envoie de jQuery: xxx

et je le reçois en utilisant xxx

Le paramètre n'est pas rempli, j'ai vérifié, le request.form.form.form.Form] contient " [\" 25 \ ", \" 26 \ "] ", la chaîne de réglementation de la matrice JSON. Y a-t-il un moyen de le faire automatiquement sans beaucoup d'int d'analyse?


0 commentaires

4 Réponses :


11
votes

Avez-vous essayé de ne pas strirler le tableau et de laisser le modèle de modèle par défaut de MVC faire la magie xxx

je suis sûr que MVC verra le tableau et le voir est un tableau d'INTS et mappez-le à votre éventail d'INTS correctement


4 commentaires

Oui, demande.Form ["IDS []"] aura la valeur "25,26", int [] toujours non contraignante.


@Tdaver Vous devez définir la propriété "traditionnelle" "traditionnelle" à vrai pour la sérialisation de la gamme peu profonde pour fonctionner correctement selon api.jquery.com/jquery.param aussi


Tout ce que je manquais était le drapeau traditionnel. Merci


@ Keith.abramo Veuillez inclure une référence à la propriété traditionnelle de votre réponse.



0
votes

Vous devez utiliser

$.ajax({
    url: someUrl, 
    data: arrayToParamObject('ids', id_array)
})


0 commentaires

4
votes

Vous pouvez le faire de deux manières différentes

1. Utilisez $ .AJAX pour poster des données à votre action forte> p>

public class myController
    {
    public ActionResult myAction(string json)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        List<int> list = serializer.Deserialize<List<int>>(json);
    }
}


0 commentaires

11
votes

Pour MVC3, vous devez configurer JQuery pour utiliser la sérialisation traditionnelle "superficielle". Voir ici .

Demande Ajax côté client: xxx

Méthode d'action: xxx


0 commentaires