Se si esegue la serializzazione di un modulo utilizzando qualcosa come jQuery, esso mappa spesso le chiavi e i valori JSON alle proprietà di un oggetto sull'azione del controller su cui si sta effettuando la registrazione. Quindi:Invio di più elementi al controller MVC tramite jQuery.Ajax
jQuery:
function PostForm() {
$.ajax({
url: "/Home/TestMVC",
type: "POST",
dataType: "application/JSON",
data: $('#form').serialize(),
complete: callFunction
}
});
Presumendo dettagli principali contiene elementi che avranno il nome del parametro come una chiave che dovrebbero mappare l'oggetto direttamente:
Azione:
public void TestMVC(MyObject obj)
{
//Obj should now contain the data from the serialised form
}
POST:
Name: "Bob"
Age: "999"
Sex: "Unknown"
Qualcuno sa come funziona? Si sta rompendo ogni volta che passo il modulo e qualsiasi altro dato al controller.
Desidero inviare il contenuto dei dati nonché una QueryString che potrebbe contenere qualsiasi numero e tipo di coppie chiave/valore per il controller. Posso estrarre queste coppie chiave/valore sul server poiché non posso creare un oggetto per loro sulla firma del metodo. Tuttavia, questo non funziona come previsto.
jQuery:
function PostForm() {
$.ajax({
url: "/Home/TestMVC",
type: "POST",
dataType: "application/JSON",
data:
{
Obj: $('#form').serialize(),
TheWeirdQueryString: $('.additionalParams').serialize(),
}
});
};
Azione:
public void TestMVC(MyObject obj, String TheWeirdQueryString)
{
//Obj now does NOT contain the element, it is NULL. Whereas TheWeirdQueryString works fine.
}
Messaggio:
Obj: name=bob&age=999&sex="unknown"
TheWeirdQueryString: param1=1¶m2=2
Credo che questo è perché ho fatto creato un oggetto JSON come dati e impostare le proprietà al nome dell'oggetto.
C'è una differenza nei valori POST che appaiono in Firebug. Quando posto solo l'oggetto, i valori POST sono tutte le chiavi dell'oggetto/modulo con i loro valori corrispondenti. Nel secondo esempio ci sono due semplici proprietà, il nome che ho dato loro, ognuna contenente una QueryString (Foo=1&Bar=2
) e MVC non può mappare una QueryString ai membri di un oggetto (o così apparirebbe).
È comunque necessario iniziare a lavorare come fa in primo luogo, ma anche inviare dati aggiuntivi a un secondo argomento sull'azione? Sto indovinando che è di aggiungere una proprietà in più a tutti quelli esistenti creati quando jquery esegue la serializzazione del modulo.
Il POST Io in realtà voglio è:
Name: "Bob"
Age: "999"
Sex: "Unknown"
TheWeirdQueryString: param1=1¶m2=2
Puoi pubblicare i valori post che stai vedendo per entrambi gli scenari? Non capisco la tua descrizione. –
Fatto. L'ultimo esempio è il post che sto cercando di fare. – Damien