MVC 3 AJAX Post, Liste gefüllt mit Objekten, aber Objekte Eigenschaften sind leer

8

Ich habe das folgende Problem:

Bei einem Button-Klick schicke ich einige Daten an den Server. Meine Controller-Aktion sieht folgendermaßen aus:

%Vor%

Wo das MyViewModel so aussieht:

%Vor%

Und der AJAX-Call ist folgender:

%Vor%

Was ich bereits versucht habe:

  • Geänderter dataType in 'json'
  • verwendet: traditionell: wahr
  • versuchte var myEntries = JSON.stringify (...);
  • versuchte var myEntries = {entries: [JSON.stringify ({...}), JSON.stringify ({...})]};
  • wie oben, aber mit jQuery.param (..., true);
  • Verwendung von IEnumerable oder MyViewModel [] anstelle von list.
  • Jede Kombination der oben genannten

Was mache ich hier falsch?

Vielen Dank im Voraus, dass Sie mir geholfen haben!

BEARBEITEN

Meine (Razor) Ansicht ist in diesem Moment nicht interessant, da sie nichts mit irgendetwas zu tun hat. Ich benutze keine der HTML.TextBoxFor (oder ähnlichen) Methoden, um die myEntries-Variable zu füllen. Es wird tatsächlich dynamisch gefüllt (weil es viele viele Bedingungen gibt). Für die Frage (und meine eigenen Tests) habe ich die Variable fest codiert. :)

    
Shion 11.04.2012, 07:47
quelle

3 Antworten

12

Mit Ihrer Antwort und der Verwendung von JSON.stringify Methode funktioniert es für mich

%Vor%     
Andrew Flierman 12.04.2012, 07:35
quelle
5

Ich habe die Antwort bekommen!

jQuery kann manchmal verwirrend sein.

dataType ist der Parameter, der angibt, was Sie vom Server zurückbekommen möchten. contentType ist der Parameter, der angibt, was Sie an den Server SENDEN.

Aus dem obigen Beispiel funktioniert es, wenn Sie hinzufügen:

contentType: 'application / json; charset = utf-8 ',

im AJAX-Anruf.

    
Shion 12.04.2012 06:55
quelle
1

Nur zur Ergänzung der Antwort, wie die Liste erstellt wird, die zurück an den Controller gesendet wird. Das liegt daran, dass Sie das Array nicht mit dem Namen der Liste umbrechen müssen. Es sieht hässlich aus und kann nicht mit eingebauten Funktionen verwaltet werden. In diesem Beispiel wird gezeigt, wie JSON zurückgeschrieben wird, das MVC als eine Liste von interpretieren und interpretieren wird. (Aber selbst wenn das Array umgebrochen ist, funktioniert es immer noch, aber das ist statischer Inhalt und schwer zu verwalten)

In diesem Beispiel wurde das sortierbare Plugin von jQuery verwendet. Ich möchte das gesamte Listenmodell mit den neuen Ordnungsindizes zurückspeichern, um es in der Datenbank zu speichern.

%Vor%

Und mein MVC-Controller ist so einfach wie ...

%Vor%     
ppumkin 24.06.2013 12:34
quelle