Hallo zusammen,
bei normalen Formularen ermittel ich mir mit folgenden Code welcher Submit Button gedrückt worden ist.
[HttpPost]
public ActionResult CreateProductInventory(InventorySubmitViewModel submitModel, string onSave, string onDelete)
Das funktioniert soweit ganz gut. Jetzt habe ich ein Modal Dialog mit jQuery realisiert, aber bei den Parameter onSave, onDelete bekomme ich immer NULL. Nur das Submit-Model hat gültige Werte.
Kann es sein, dass es mit dem Dialog nicht mehr funktioniert. Leider finde ich im Netz auch keine Lösung.
Danke
MFG
Nö, kann nicht sein.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
OK, habe den Fehler gefunden....
Data Parameter im JS muss natürlich auch die Buttons übergeben.
Sorry
zu früh gefreut.....
[HttpPost]
public ActionResult CreateProductInventory(InventorySubmitViewModel submitModel, String btnAddInventoryItem, String btnRemoveInventoryItem, String btnSaveInventories)
$('form', dialog).submit(function () {
$.ajax({
url: this.action,
type: this.method,
data: { submitModel: $(this).serialize(), btnAddInventoryItem: $('#btnAddInventoryItem'), btnRemoveInventoryItem: $('#btnRemoveInventoryItem'), btnSaveInventories: $('#btnSaveInventories') },
//data: $(this).serialize(),
success: function (result) {
alert(result);
if (result.success) {
$('#' + dialogId).dialog('close');
} else {
$('#' + dialogId).html(result);
bindForm();
}
},
error: function () {
}
});
return false;
});
Hintergrund:
In meiner Dialog-Box habe ich eine Tabelle in der ich Items hinzufügen, löschen kann. Deshalb die verschiedenen Buttons für Add, Remove und einen um die ganze Tabelle zu speichern und den Dialog zu schließen.
Sobald ich einen Button klicke macht der CodeBehind genau das was er tun soll, aber anstatt den Dialog stehen zu lassen (bspw. wenn ich Zeile hinzufüge) wird mir der Inhalt nicht mehr im Dialog angezeigt sondern auf der komplette Seite (Layout usw. sind weg). Ich konnte den Fehler soweit schon einschränken, dass es an meiner JS "data" Zeile liegt.
Fehlerfrei:
data: $(this).serialize()
Fehler:
data: { submitModel: $(this).serialize(), btnAddInventoryItem: $('#btnAddInventoryItem'), btnRemoveInventoryItem: $('#btnRemoveInventoryItem'), btnSaveInventories: $('#btnSaveInventories') }
Wäre für jede Unterstützung dankbar.
Dir ist schon klar, dass Du mit $('#btnAddInventoryItem')
nur eine Referenz holst, also im Prinzip ein Objekt und keinen Wert bekommst....?
Öffne Dein Firebug und schau nach, was wirklich an den Server gesendet wird.
Sauber sieht Dein Vorgehen nicht aus - insbesondere das serialize() wird wahrscheinlich was ganz anderes liefern als Du Dir vorstellst.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Die Serialisierung hat in der Tat etwas anderes gebracht als ich dachte. Auf jeden Fall ist das Problem dank des Ansatzes gelöst. Danke