2011-01-11 12 views
2

Ich habe viele verschiedene Beiträge zu diesem Thema gelesen und werde es weiterhin tun und verschiedene Dinge ausprobieren. Es gibt so viele Unterschiede in der Information, dass ich, mit meiner relativen Unerfahrenheit mit MVC usw., fühle, dass ich ein wenig im Kreis herumlaufe.MVC3 Submit Ajax Formular

Hier ist die Situation. Ich zeige eine (Razor) -Ansicht in einer MVC3-App an, die Datensätze in einem jqGrid enthält. Durch einen Doppelklick auf einen Datensatz wird dieser Datensatz in einem jQuery UI-Dialogfeld geöffnet. Die ursprüngliche Ansicht enthält nur das, das den Dialog darstellt. Die aufgerufene Aktion gibt eine Teilansicht zurück, die zum Inhalt des Dialogfelds div wird.

Dieser Teil funktioniert, obwohl ich das Gefühl habe, dass es ein wenig aufräumen könnte. Mein wirkliches Problem ist später das Senden des Formulars, das in diesem Dialog enthalten ist. Es soll zu einer Aktion mit dem gleichen Namen zurückkehren, was es auch tut. Diese Aktion soll die gleiche Teilansicht mit Validierungsfehlern validieren und speichern oder zurückgeben. Im Moment versuche ich nur die Ansicht zurückzugeben, ohne etwas anderes zu tun. Die Ansicht wird in Ordnung zurückgegeben, aber die gesamte Seite wird ersetzt und nicht nur der Inhalt des Dialogfelds.

Ich habe verschiedene Dinge ausprobiert, einschließlich der Verwendung von Ajax.BeginForm und Angabe der ID des Dialogfelds div als UpdateTargetId der AjaxOptions. Nichts hat bisher funktioniert. Beachten Sie, dass das Formular, das gesendet wird, innerhalb des Divs liegt, sodass es ebenfalls ersetzt wird. Nicht sicher, ob dies ein Teil des Problems ist.

Ich packe jetzt für den Tag ein, also dachte ich, ich würde posten und sehen, was über Nacht passiert, bevor ich das Problem am nächsten Morgen wieder angreife.

+1

Fehle ich etwas? Es klingt wie der Code, über den Sie Fragen stellen, wird nicht wirklich gepostet? Ist das korrekt? Wenn ja, wie sollen wir helfen? – jmort253

Antwort

2

jmcilhinney, Sie hatten Recht, die AjaxOptions.UpdateTargetId festzulegen, aber Sie müssen AjaxOptions.InsertionMode auch auf InsertionMode.Replace setzen.

0

Ich hatte das gleiche Problem aufgetreten. Die Lösung bestand darin, sicherzustellen, dass sich die Datei jquery.unobtrusive-ajax.is auf der Seite befindet. Das hat mein Problem behoben. Überprüfen Sie einfach, um sicher zu gehen. Ich war zuversichtlich, dass ich alle js-Dateien hatte, aber ich fand heraus, dass ich diesen vermisste.