Wie können mehrere Zeilen gleichzeitig in MVC4 gespeichert werden?

8

Jedes Beispiel, das ich von einer MVC4-App finden kann, bewirkt, dass die Bearbeitung an jeweils einer Datenzeile erfolgt. Es zeigt alle Zeilen mit Daten an, wobei jede Zeile eine Bearbeitung hat, die Sie zu einer anderen Seite führt und Ihnen erlaubt, diese eine Zeile zu bearbeiten.

Was ich tun möchte, ist, alle Datenelemente in Zeilen anzuzeigen und anstatt dass der Benutzer in jeder Zeile EDITIEREN muss, sind alle Datenpunkte der Zeilen bereits in Textfeldern, die der Benutzer direkt aktualisieren kann. Und es gibt nur einen SAVE auf der Seite, der nur alle Updates / Änderungen auf einmal speichern würde.

Wie kann ich meine MVC-App so einrichten, dass sie dies unterstützt?

    
dan27 20.11.2012, 23:02
quelle

2 Antworten

10

Sie können hierfür EditorTemplates verwenden. Das folgende Beispiel zeigt das normale Formular Buchungsbeispiel. Sie können es mithilfe der serialize -Methode und dem Senden von Formularwerten aufheben.

Angenommen, Sie müssen die Liste der Schülernamen für einen Kurs bearbeiten. Also lass uns ein paar Viewmodels dafür erstellen

%Vor%

Nun erstellen Sie in Ihrer GET -Aktionsmethode ein Objekt unseres Ansichtsmodells, initialisieren die Students -Auflistung und senden sie an unsere stark typisierte Ansicht.

%Vor%

Erstellen Sie jetzt einen Ordner namens EditorTemplates unter Ansichten / YourControllername . Dann erstellen Sie eine neue Sicht unter dem Namen Student.cshtml mit unter dem Inhalt

%Vor%

Verwenden Sie in unserer Hauptansicht (StudentList.cshtml) die EditorTemplate-HTML-Hilfsmethode, um diese Ansicht anzuzeigen.

%Vor%

Dies bringt die gesamte Benutzeroberfläche mit jedem Ihrer Schülernamen in ein Textfeld, das in einer Tabellenzeile enthalten ist. Jetzt, wenn das Formular veröffentlicht wird, hat die MVC-Modellbindung alle Textfeldwerte in der Students -Eigenschaft unseres Ansichtsmodells.

%Vor%

Ajaxifizierte Lösung

Wenn Sie dies ajaxifizieren möchten, können Sie auf die Schaltfläche "Senden" klicken, das Formular abrufen und serialisieren und an die gleiche Post-Aktionsmethode senden. Anstatt nach dem Speichern umzuleiten, können Sie JSON zurückgeben, das den Status der Operation anzeigt.

%Vor%     
Shyju 20.11.2012, 23:28
quelle
1

Sie müssen nur das richtige Modell und die Liste des Beispiels angeben und den Ajax mit Informationen über jede Zeile (Element des Arrays) senden, sie auf der Serverseite lesen und jedes Element entsprechend aktualisieren. Für dieses Ziel verwenden Sie Post-Anfrage. Übergeben Sie einfach die Liste der Elemente als Parameter in den Controller und übergeben Sie sie mit dem Ajax.

Zum Beispiel könnte Ihr Controller wie folgt definiert werden:

%Vor%

und JavaScript könnte wie sein:

%Vor%

Und natürlich hat Ihre "Speichern" -Schaltfläche einen Klick-Event-Handler, der diese Funktionalität mit dem Ajax-Aufruf aufruft.

Sie können KnockoutJS oder andere MVVM-Frameworks verwenden, um die Daten mit dem DOM auf der Clientseite zu binden.

    
Kath 20.11.2012 23:19
quelle

Tags und Links