Laden...

[gelöst] ASP MVC4 jQuery Dialog mit mehreren Submit Buttons

Erstellt von ZeroQool vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.178 Views
Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 10 Jahren
[gelöst] ASP MVC4 jQuery Dialog mit mehreren Submit Buttons

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

16.825 Beiträge seit 2008
vor 10 Jahren

Nö, kann nicht sein.

Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 10 Jahren

OK, habe den Fehler gefunden....

Data Parameter im JS muss natürlich auch die Buttons übergeben.

Sorry

Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 10 Jahren

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.

16.825 Beiträge seit 2008
vor 10 Jahren

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.

Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 10 Jahren

Die Serialisierung hat in der Tat etwas anderes gebracht als ich dachte. Auf jeden Fall ist das Problem dank des Ansatzes gelöst. Danke