Hvis youa er serieomkoding en form ved hjelp av noe som jQuery, vil det ofte kartlegge JSON nøkler og verdier til egenskapene til et objekt på Controller Handling du legger til. Så:
jQuery:
function PostForm() {
$.ajax({
url: /Home/TestMVC,
type: POST,
dataType: application/JSON,
data: $('#form').serialize(),
complete: callFunction
}
});
Forutsatt viktigste detaljene inneholder elementer som vil ha navnet på parameteren som en nøkkel de skal kartlegge til objektet direkte:
Handling:
public void TestMVC(MyObject obj)
{
//Obj should now contain the data from the serialised form
}
POST:
Name: Bob
Age: 999
Sex: Unknown
Er det noen som vet hvordan dette fungerer? Det er å bryte hver gang jeg passerer form og eventuelle tilleggsdata til kontrolleren.
Jeg ønsker å sende innholdet i dataene, så vel som en QueryString som kan inneholde et hvilket som helst antall og typer av nøkkel / verdi-par til kontrolleren. Jeg kan utvinne disse nøkkel / verdipar som på tjeneren siden jeg ikke kan skape et objekt for dem på metoden signatur. Men klarer dette til å fungere etter hensikten.
jQuery:
function PostForm() {
$.ajax({
url: /Home/TestMVC,
type: POST,
dataType: application/JSON,
data:
{
Obj: $('#form').serialize(),
TheWeirdQueryString: $('.additionalParams').serialize(),
}
});
};
Handling:
public void TestMVC(MyObject obj, String TheWeirdQueryString)
{
//Obj now does NOT contain the element, it is NULL. Whereas TheWeirdQueryString works fine.
}
Post:
Obj: name=bob&age=999&sex=unknown
TheWeirdQueryString: param1=1¶m2=2
Jeg tror dette er fordi jeg har faktisk opprettet en JSON objekt som data og angi egenskapene til navnet på objektet.
Det er en forskjell i posten verdiene som vises i Firebug. Når jeg legge gjenstanden alene, POST-verdiene er alle nøklene til objektet / skjema med de tilsvarende verdier. I det andre eksemplet er det to enkle egenskaper, Navnet ga jeg dem, som hver inneholder en QueryString ( Foo=1&Bar=2
) og MVC kan ikke tilordne en QueryString til medlemmer av et objekt (eller slik det ville se ut).
Er det allikevel i det hele tatt å få til å fungere som det gjør i første omgang, men også til å sende ytterligere informasjon til en andre argument på handling? Jeg gjetter det er å legge en ekstra eiendom til alle de eksisterende opprettet da jquery gjør serialisering av skjemaet.
POST jeg faktisk ønsker er:
Name: Bob
Age: 999
Sex: Unknown
TheWeirdQueryString: param1=1¶m2=2