Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

ASP.NET MVC 5 Grundkurs

Einen Datensatz löschen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Auch das Löschen eines Datensatzes ist mit einem ähnlichen Ansatz wie beim Bearbeiten möglich. Hier geht es nebenbei auch um das Thema Sicherheit – schließlich werden hier Daten vernichtet.
08:12

Transkript

Von CRUD haben wir jetzt das D, das Löschen, dann könnten wir einfach einen simplen Get-Link machen und dann wenn dieser aufgerufen wird, wird gelöscht, hat aber natürlich Sicherheitsimplikationen, wenn Sie jemand dazu bringt, etwa durch zusenden einer E-Mail so eine Lösch-Link aufzurufen und Sie sind in die Anwendung eingeloggt, dann löschen Sie vielleicht Sachen, die sie nicht wollen, das heißt, so ein Zwischenschritt und dann nochmal einen Http Post, wo man dann wirklich damit bestätigt, ja ich bin mir sicher, dass ich das löschen will, ist vielleicht eine etwas bessere Idee. Sie ahnen wie das läuft, wir sind an unserem Controller und brauchen dann letztendlich noch eine Delete Action Methode. Uns wäre vielleicht ganz praktisch, wenn wir das Löschen auch irgendwo in unseren Views manifestieren, wir könnten zum Beispiel in der Detailansicht neben dem Bearbeiten-Link auch noch so einen Lösch-Link machen. Also Beschriftung "Löschen" und das ganze heißt dann "Delete", uns wird auch wieder die ID übergeben. Diese nur als Vorbereitung, das heißt, in der Detailansicht könnten wir jetzt löschen. Wir könnten natürlich auch in der Listenansicht dieses löschen mit einbauen, wenn du denn wollen. Ich erzeuge jetzt dazu die zugehörige neue Action Methode, also GET: /Personen/Delete/1 und die Methode gibt ein ActionResult zurück und Sie kennen ja mittlerweile das Vorgehen, also Delete und dann wird eine ID übergeben, wieder potenzieller Null-Wert, falls das irgendjemand ohne Parameter von Hand aufruft, schauen also, haben wir so einen Wert und falls ja leiten wir wieder auf die Übersicht weiter, ansonsten suchen wir uns mal die Person, die wir löschen wollen, ob es die überhaupt gibt, also db.People.Find(id) und wenn es die Person nicht gibt, dann RedirectToAction ("Index"), ja und ansonsten return View (person), das heißt, wir haben wieder irgendeine Ansicht, wo wir sagen Person Max Mustermann, soll die gelöscht werden, ja nein und ja, dann wird das entsprechend angezeigt in einer typisierten View. Diese typisierte View erstellen wir erneut, zum letzten Mal über Ansicht hinzufügen, nehme wieder eine Vorlage, nämlich die Delete-Vorlage, Modellklasse auswählen, Datenkontextklasse auswählen, hinzufügen, Delete.cshtml wird erzeugt, wieder eine typisierte Ansicht und was hat diese Ansicht, noch mal eine nette Anzeige, nämlich es wird, das ist jetzt so ähnlich wie Detailansicht, es wird die Beschriftung für den Vornamen angezeigt, den nehme ich hier wieder statisch, um ein bisschen Komplexität da rauszunehmen. Nachname wird angezeigt und dann das Geburtsdatum und ja dann wird auch hier entsprechend, abhängig vom Datentyp das Ganze korrekt angezeigt, bei unseren simplen Datentypen, wie Strings, könnte ich natürlich direkt @Model.Vorname sagen, und hier dann entsprechend @Model. Nachname. na ja und dann habe ich noch das Geburtsdatum und dann wird es sozusagen interessant. Ich sehe also nochmal die Daten, die gelöscht werden sollen und jetzt muss ich das auch bestätigen. Dazu wird ein Formular erzeugt, wieder mit dieser Sicherheitsmaßnahme und dann wird gefragt ja, möchte ich jetzt hier wirklich löschen, gibt es eine Löschen-Schaltfläche, nebst eines Links "Zurück zur Übersicht". Und wenn ich diese Löschen-Schaltfläche klicke, wird das Formular verschickt, HttpPost und na ja Sie möglicherweise, wie das dann laufen wird, nämlich es wird eine neue Action Methode aufgerufen, und zwar eine die mit Post funktioniert. Also POST: /Personen/Delete HttpPost und public ActionResult Delete(), und die Frage ist jetzt, was für ein Parameter wird an diese Action Methode übergeben. Denn wenn uns das Formular anschauen, in dem steht ja sonst eigentlich nichts drin, das heißt, wir haben jetzt keine Daten, die ID ist nicht Teil des Formulars, das heißt, ASP.NET MVC kann jetzt nicht durch Model Binding eine Person erzeugen, mit welchen Daten den auch, es wird nur der Inhalt des Formulars verschickt, also gar nichts eigentlich, aber es wird das Formular an die aktuelle URL verschickt. Was ist die aktuelle URL? Sehen wir hier oben /Personen/Delete/1. Das heißt, diese URL wird wieder verwendet, das heißt, wir bekommen dann doch wieder über die URL eine ID, also haben wir wieder eine entsprechende ID, die hier dann per Post sozusagen aufgerufen wird. Aber jetzt haben wir ein Problem, denn jetzt heißen die beiden Methoden gleich und die Parameter sind quasi auch gleich. Ist schwierig sich zu entscheiden, deswegen gehen wir hier einen Umweg und benennen die einfach um, also DeletePost und geben dann ein zusätzliches Attribut an, nämlich sagen okay, der ist für die Action-Delete gedacht. Ich mache jetzt beide Attribute in Einsatz von eckigen Klammern, ich könnte auch noch einfach HttpPost als ein Attribut und dann danach oder davor Action einmal als Attribut verwenden. So, also ich will jetzt den Eintrag mit ID löschen. Wie mache ich das? Ich hole mir mal wieder die Person, db.People.Find(id) und wobei auch hier kann Nullable sein, also wenn id- -null, dann ist wieder irgendwas schief gegangen, RedirectToAction ("Index") oder das ist ein Angriff, wahrscheinlicher als das was schief gegangen ist, ich suche mal jetzt die Personen und wenn die Person nicht vorhanden ist, geht es auch wieder zurück auf Los und ansonsten lösche ich die Person, also db.People.Remove(Person) und speichere ab und nach dem Abspeichern geht es wieder zurück zur Übersicht, return RedirectToAction. Und im Wesentlichen war es das. Wir haben jetzt hier kein klassisches Return-View, denn hier gibt es nicht den Fall, dass ich irgendwas falsch ausfülle. Ich klicke halt auf die Schaltfläche oder nicht, aber dementsprechend kann ich das dann so realisieren und somit eine Art einfache Lösch-Oberfläche anbieten für meine Applikation. Probieren wir es gleich aus. Gehen wir mal in die Delete.cshtml-Ansicht, starten Chrome, dann wird ja diese URL aufgerufen, aber wir haben kein Parameter hinten drangehängt, das heißt wir werden jetzt weitergeleitet zur Index-Übersicht, erscheint gleich, sind bei der Index-Übersicht, wählen zum Beispiel Martin Muster aus, haben dann hier die entsprechenden Links auch den Löschen-Link, /Personen/Delete/3, klicken da mal drauf, bekommen hier diese Meldung können wir natürlich anpassen, reine HTML-Datei können nochmal schauen, ob das wirklich die Person ist, die wir loswerden wollen, also zumindest Datenbanktechnisch, klicken auf "Delete", landen wieder bei der Übersicht und schon sind wir wieder im quasi Ausgangszustand ohne die dritte Person und das dritte Rad am Fahrrad sozusagen. Gut, das heißt also, Sie sehen, dass dieses Create, Read, Update, Delete immer nach demselben Muster funktioniert. Wir haben irgendeine Get-Anforderung, der Controller kümmert sich darum, sucht dann eine View aus, zeigt dann gegebenenfalls Daten an, diese Daten werden an die View übergeben. Soweit so gut, wenn wir etwas ausfüllen müssen, dann ist ein Formular dadrin und wir haben eine Action-Methode, die auf HttpPost lauscht und dann entsprechend verarbeitet und so können wir dann Daten verändern, Daten löschen, Daten einfügen und danach ja wieder auf die Übersicht weiterleiten oder wieder auf unsere Editier- oder Erstellansicht zurückverweisen, inklusive Vorausfüllung der Felder. Es ist also immer derselbe Ansatz eigentlich und wenn man den einmal durchexerziert hat, deswegen haben wir wirklich alle Varianten zum Einsatz kommen lassen, dann ist man eigentlich immer mit demselben Prozess unterwegs, sprich einmal umgesetzt, kann man es immer wieder wiederholen und auf das jeweilige Datenmodell und auf die jeweilige Technik und auf die jeweilige Domaine anpassen

ASP.NET MVC 5 Grundkurs

Machen Sie sich mit den Grundlagen von ASP.NET MVC 5 vertraut und lassen Sie sich in dieser anspruchsvollen Einführung diesen Architekturansatz von Microsoft erläutern.

2 Std. 30 min (20 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!