Verbrauchen jQuery.serializeArray in ASP.NET MVC
Poste ich $('#myForm').serializeArray()
zu einem ASP.NET MVC (2.0) handeln.
serialisierte array sieht wie folgt aus:
filters[0][name] : gemcolor
filters[0][value] : Yellow
filters[1][name] : gemcolor
filters[1][value] : Green
filters[2][name] : jcOnly
filters[2][value] : true
someOtherData : abc
Ich will, dass konsumiert:
public ActionResult GetData(Filter filter)
class Filter {
string someOtherData;
bool jcOnly;
List<string> gemcolor;
}
Kann ich nur Graben durch FormCollection
, aber ich Suche eine elegantere Lösung (ich vermute, es soll sich um einen benutzerdefinierten Modell binder).
Was ist mit JSON? Ich weiß nicht, ob die jQuery serialisiert Daten leicht verbraucht ASP.NET MVC, aber JSON wäre sicherlich.
Ich kann nicht finden, one-liner zu tun, Formular->JSON. Bin ich etwas fehlt? Ich würde noch gerne wissen, die Antwort auf meine Frage, justFMI.
jQuery + JSON = JSON-Plugin-Encoder
ist es ein one-liner form->JSON? JSON-Plugin Encoder nicht form->JSON, tut es JS-Objekt->JSON. Ich kann nicht einen Weg finden, schalten Sie ein Formular, in das JSON mit nur einer Zeile code. Obwohl die Verwendung von JSON ist es wahrscheinlich einfacher, dann Brauch binder Modell.
Ich kann nicht finden, one-liner zu tun, Formular->JSON. Bin ich etwas fehlt? Ich würde noch gerne wissen, die Antwort auf meine Frage, justFMI.
jQuery + JSON = JSON-Plugin-Encoder
ist es ein one-liner form->JSON? JSON-Plugin Encoder nicht form->JSON, tut es JS-Objekt->JSON. Ich kann nicht einen Weg finden, schalten Sie ein Formular, in das JSON mit nur einer Zeile code. Obwohl die Verwendung von JSON ist es wahrscheinlich einfacher, dann Brauch binder Modell.
InformationsquelleAutor THX-1138 | 2011-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das wird nicht funktionieren, da das Standard-Modell von binder nicht erwarten, dass die Daten formatiert werden wie diese. Verwenden Sie einfach
.serialize()
stattserializeArray()
. Beispiel:oder vereinfachen Sie Ihr Leben, indem Sie mit den hervorragenden jquery form plugin, die Ihnen erlaubt zu AJAXify bestehende HTML-Formulare in einer eleganten Art und Weise:
UPDATE:
Nach der Erklärung in deinem Kommentar hier, wie Sie konnte gehen:
Könnte man das plugin benutzen von diese Antwort verändert sich die form-Elemente in ein Objekt verständlich von der Standard-Modell-binder und könnten zusammengefasst werden mit einigen weiteren Informationen:
dann einfach:
Ich kann nicht mit ajaxForm in diesem Fall, da die Daten übermittelt werden ist nicht ein form-submit-post. Es ist ein AJAX-post (erledigt und durch DataTables.Net)
also Sie sagen, Sie können nicht ändern, die Anfrage-strings? Wenn dies der Fall ist, nur ein custom-Modell binder kann Ihnen dabei helfen.
Ajax-Daten Aussehen:
data: { JSON.stringify(aoData), filters: $('#myForm').serializeArray() }
ersetzenserializeArray
mitserialize
wird nicht helfen, da ich noch auf Abfrage analysieren-wie string.die Informationen, die in Ihrem letzten Kommentar haben sollte, wurde als Teil deiner Frage. Bitte siehe mein update darüber nach, wie Sie beim verfassen einer AJAX-Anfrage, wo ein Teil der Daten kommt aus einem Formular und der andere Teil von irgendwo anders.
InformationsquelleAutor Darin Dimitrov
Ich weiß, das ist alt, aber wie wäre es mit etwas wie dieses - dies ist, was ich allgemein auf meinen Seiten submit via ajax:
Neige ich dazu die html-Struktur:
Etwas wie dieses:
Dann können Sie ein normales Modell, um zu erfassen, was Sie brauchen. Nicht sicher, ob dies der beste Weg ist oder irgendetwas, aber ich verwende es mal.
InformationsquelleAutor user3836415