Wir versuchen, mehrere Formulare mit einem Ajax (jQuery) Aufruf an eine ASP-Anwendung zu senden.Mehrere Formulare im Back-End schreiben/binden ASP.NET MVC (MEF)
Wir verwenden den folgenden jQuery-Code:
var formContainer = {
Form1 : form1.serialize(),
Form2 : form2.serialize()
}
$.ajax({
type: "POST",
url: '@Url.Action("CreateModel", "Controller")',
data: formContainer,
success: function (result) { }
});
Auf dem Server wir folgendes in der Request.Form Eigenschaft erhalten:
Key : Value
Form1 : All serialized form elements for Form1
Form2 : All serialized form elements for Form2
Normalerweise benutzen wir die folgende Methode so ASP automatisch schafft das Objekt mit dem richtigen Eigenschaftswert:
public ActionResult CreateModel(ClassForForm1 obj)
Aber weil die beiden f Orms werden zusammen gesendet, der Modelbinder kann die Klasse nicht binden und erstellen. Für diese Aktion möchten wir, dass der Modellbauer die Werte in Request.Form ["Form1"] verwendet.
Wir können keinen benutzerdefinierten Modelbinder verwenden, da wir eine externe Bibliothek verwenden (DevExpress, sie haben darüber eine eigene Implementierung geschrieben).
Wir verwenden das MEF-Framework zum Hinzufügen von Funktionalitäten (diese Funktionen werden als Formulare in der Ansicht hinzugefügt). Aus diesem Grund wissen wir nicht, was auf dem Backend zu erwarten ist. Das Schreiben eines Wrapper ViewModel ist nicht akzeptabel.
Die Funktionalität zum Verarbeiten der anderen Formulardaten wird in anderen Modulen verarbeitet.
Alle Lösungen sind willkommen!
Vielen Dank im Voraus.
Wenn Sie sagen "Also für diese Aktion möchten wir, dass der Modellbauer die Werte in Request.Form [" Form1 "] verwendet." Sie möchten, dass Form2-Werte für diese Anforderung ignoriert werden? Oder möchten Sie CreateModel für ** jedes Formular ** in der Anfrage aufrufen, so dass CreateModel, wenn 3 Formulare gesendet werden, dreimal für jedes Formular einmal ausgeführt wird? – AaronLS
Ja, wir wollen die Werte in Request.Form ["Form2"] wie Sie sagten "ignorieren". –
Ich habe versucht, die Request.Form-Werte in einem benutzerdefinierten Modelbinder zu ändern, aber es liest Werte von einem IUnvalidatedprovider. Obwohl es der letzte Code (in der statischen Funktion) auf dieser Seite war: http://blogs.taiga.nl/martijn/2011/09/29/custom-model-binders-and-request-validation/. Aber ich konnte nicht finden, wie man die Werte in diesem ändert. Dies ist, was ich selbst gefunden habe, andere Lösungen sind natürlich willkommen :). –