Senden mehrerer Elemente an MVC Controller über jQuery.Ajax

Wenn Sie ein Formular mit etwas wie jQuery serialisieren, ordnet es die JSON-Schlüssel und -Werte häufig den Eigenschaften eines Objekts in der Controller-Aktion zu, für die Sie eine Veröffentlichung bereitstellen. So:

jQuery:

<code>function PostForm() {
    $.ajax({
        url: "/Home/TestMVC",
        type: "POST",
        dataType: "application/JSON",
        data:  $('#form').serialize(),
        complete: callFunction
        }
    });
</code>

Vorausgesetzt, Hauptdetails enthalten Elemente, die den Namen des Parameters als Schlüssel haben, den sie dem Objekt direkt zuordnen sollen:

Aktion:

<code>public void TestMVC(MyObject obj)
{
//Obj should now contain the data from the serialised form
}
</code>

POST:

<code>Name: "Bob"
Age: "999"
Sex: "Unknown"
</code>

Weiß jemand, wie das funktioniert? Es bricht jedes Mal ab, wenn ich das Formular übergebeund alle zusätzlichen Daten an die Steuerung.

Ich möchte den Inhalt der Daten sowie einen QueryString, der eine beliebige Anzahl und Art von Schlüssel / Wert-Paaren enthalten kann, an den Controller senden. Ich kann diese Schlüssel / Wert-Paare auf dem Server extrahieren, da ich für sie kein Objekt in der Methodensignatur erstellen kann. Dies funktioniert jedoch nicht wie beabsichtigt.

jQuery:

<code>function PostForm() {

    $.ajax({
        url: "/Home/TestMVC",
        type: "POST",
        dataType: "application/JSON",
        data: 
        { 
           Obj: $('#form').serialize(),
           TheWeirdQueryString: $('.additionalParams').serialize(),
        }
    });
};
</code>

Aktion:

<code>public void TestMVC(MyObject obj, String TheWeirdQueryString)
{
//Obj now does NOT contain the element, it is NULL. Whereas TheWeirdQueryString works fine. 
}
</code>

Post:

<code>Obj: name=bob&age=999&sex="unknown"
TheWeirdQueryString: param1=1&param2=2
</code>

Ich denke, das liegt daran, dass ich tatsächlich ein JSON-Objekt als Daten erstellt und die Eigenschaften auf den Namen des Objekts festgelegt habe.

Es gibt einen Unterschied in den POST-Werten, die in Firebug angezeigt werden. Wenn ich das Objekt alleine poste, sind die POST-Werte alle Schlüssel des Objekts / Formulars mit ihren entsprechenden Werten. Im zweiten Beispiel gibt es zwei einfache Eigenschaften, den Namen, den ich ihnen gegeben habe und die jeweils einen QueryString enthalten (Foo=1&Bar=2) und MVC kann den Mitgliedern eines Objekts (oder so) keinen QueryString zuordnen.

Gibt es überhaupt eine Möglichkeit, wie in der ersten Instanz an die Arbeit zu gehen, aber auch zusätzliche Daten an ein zweites Argument für die Aktion zu senden? Ich vermute, es ist, eine zusätzliche Eigenschaft zu allen vorhandenen hinzuzufügen, die erstellt werden, wenn jquery die Serialisierung des Formulars durchführt.

Der POST, den ich eigentlich möchte, ist:

<code>Name: "Bob"
Age: "999"
Sex: "Unknown"
TheWeirdQueryString: param1=1&param2=2
</code>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage