Si youa sont sérialisation d'un formulaire en utilisant quelque chose comme jQuery, il tracera souvent les clés de JSON et des valeurs aux propriétés d'un objet sur l'action du contrôleur que vous envoyez des messages. Alors:Envoi d'éléments multiples au contrôleur MVC via jQuery.Ajax
jQuery:
function PostForm() {
$.ajax({
url: "/Home/TestMVC",
type: "POST",
dataType: "application/JSON",
data: $('#form').serialize(),
complete: callFunction
}
});
présumant détails principaux contient des éléments qui auront le nom du paramètre comme clé qu'ils doivent mapper directement à l'objet:
Action:
public void TestMVC(MyObject obj)
{
//Obj should now contain the data from the serialised form
}
POST:
Name: "Bob"
Age: "999"
Sex: "Unknown"
Est-ce que quelqu'un sait comment cela fonctionne? Il se casse chaque fois que je passe le formulaire et toutes les données supplémentaires au contrôleur.
Je voudrais envoyer le contenu des données ainsi qu'un QueryString qui pourrait contenir un nombre et types de paires clé/valeur au contrôleur. Je peux extraire ces paires clé/valeur sur le serveur car je ne peux pas créer un objet pour eux sur la signature de la méthode. Cependant, cela ne fonctionne pas comme prévu.
jQuery:
function PostForm() {
$.ajax({
url: "/Home/TestMVC",
type: "POST",
dataType: "application/JSON",
data:
{
Obj: $('#form').serialize(),
TheWeirdQueryString: $('.additionalParams').serialize(),
}
});
};
Action:
public void TestMVC(MyObject obj, String TheWeirdQueryString)
{
//Obj now does NOT contain the element, it is NULL. Whereas TheWeirdQueryString works fine.
}
Poste:
Obj: name=bob&age=999&sex="unknown"
TheWeirdQueryString: param1=1¶m2=2
Je pense que cela parce que je suis en fait créé un objet JSON que les données et définir les propriétés au nom de l'objet.
Il existe une différence entre les valeurs POST qui apparaissent dans Firebug. Lorsque je publie l'objet seul, les valeurs POST sont toutes les clés de l'objet/formulaire avec leurs valeurs correspondantes. Dans le second exemple, il y a deux propriétés simples, Le nom que je leur ai donné, contenant chacune une QueryString (Foo=1&Bar=2
) et MVC ne peut pas mapper une QueryString aux membres d'un objet (ou alors il apparaîtrait).
Y at-il de toute façon du tout pour aller au travail comme il le fait en premier lieu, mais aussi d'envoyer des données supplémentaires à un 2ème argument de l'action? Je devine que c'est pour ajouter une propriété supplémentaire à tous ceux existants créés quand jquery fait la sérialisation du formulaire.
Le POST Je veux en fait est:
Name: "Bob"
Age: "999"
Sex: "Unknown"
TheWeirdQueryString: param1=1¶m2=2
Pouvez-vous afficher les valeurs POST que vous voyez pour les deux scénarios? Je ne comprends pas très bien votre description. –
Terminé. Le dernier exemple est le message que j'essaie de faire. – Damien