Entwickler-Ecke

ASP.NET und Web - ViewModel und jQuery.Sortable über Post an Controller


manteltrager - Fr 02.03.12 17:32
Titel: ViewModel und jQuery.Sortable über Post an Controller
Hi,
folgendes Szenario:
Ich möchte in meiner View (Edit View) eine Tabelle mit Daten aus einem ViewModel ausgeben und editierbar machen (funktioniert super). 2. Schritt ich möchte dem Benutzer die Möglichkeit geben die Zeilen der Tabelle zu verschieben (lässt sich super mit Javascript realisieren). Diese gesamte neue Reihenfolge und die geänderten Daten möchte ich nun an den Controller zurück schicken.

Das Umstrukturieren der Zeilen habe ich über folgende Javascript Funktion realisiert:

Quelltext
1:
2:
3:
$(document).ready(function () {
        $("#sortable").sortable({});
    });


Für das Abspeichern habe ich folgende 2. Javascript Funktion geschrieben:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
$(function () {
        $("#submit-list").click(function () {
            debugger;
            $.ajax({
                url: '/Test/EditBrokerage/',
                data:
                { arr: $("#sortable").sortable('toArray'),
                    brokerageToSave: "H I E R   M E I N   M O D E L"
                },
                type: 'post',
                traditional: true
            });
            document.forms[0].submit();
        });
    });


Die mit folgendem Button aufgerufen wird:

<input type="button" name="saveButton" value="Speichern" id="submit-list"/>

Meine Controller Edit Action hat im wesentlichen 2 Parameter:


Quelltext
1:
2:
[HttpPost]
… EditBrokerage(BrokerageEditViewModel brokerageToSave, List<string> arr)


Die Funktion $("#sortable").sortable('toArray') liefert mir die Reihenfolge der Zeilen in meinen Parameter arr. Bei Klicken auf den Button kommen die neue Reihenfolge auch in meiner Controller Action an. Es fehlen allerdings die Daten aus meinem Formular


Quelltext
1:
(@using (Html.BeginForm("EditBrokerage", "Test", FormMethod.Post, new { name = "myID"})))                    

:-(

Frage: Wie übergebe ich das geänderte Model bzw. ViewModel an das Javascript, so dass diese Daten auch in meiner Controller Action ankommen?

Bzw. andere Frage: Wie übergebe ich das obige arr (Reihenfolge der Zeilen) an den Submit Button:

Quelltext
1:
<input type="submit" name="saveButton" value="Save"/>                    


Dieser sendet mir völlig korrekt meine geänderten Daten im ViewModel an meine Controller Action. Es fehlen mir aber nun die Reihenfolge der Zeilen.submit-list