Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Stephen Walter
Stephen Builds eine gesamte datenbankgesteuerte ASP.NET MVC-Anwendung von Anfang bis Ende. Dieses Lernprogramm ist eine großartige Einführung für Personen, die mit dem ASP.NET MVC Framework noch nicht fertig sind und sich mit dem Prozess der Erstellung einer ASP.NET MVC-Anwendung in Verbindung setzen möchten.
Der Zweck dieses Lernprogramms besteht darin, Ihnen ein Gefühl von "wie es ist" zu geben, um eine ASP.NET MVC-Anwendung zu erstellen. In diesem Lernprogramm strahle ich von Anfang bis Ende durch die Erstellung einer gesamten ASP.NET MVC-Anwendung. Ich zeige Ihnen, wie Sie eine einfache datenbankgesteuerte Anwendung erstellen, die veranschaulicht, wie Sie Datenbankdatensätze auflisten, erstellen und bearbeiten können.
Um den Prozess der Erstellung unserer Anwendung zu vereinfachen, nutzen wir die Gerüstfunktionen von Visual Studio 2008. Wir lassen Visual Studio den anfänglichen Code und die Inhalte für unsere Controller, Modelle und Ansichten generieren.
Wenn Sie mit Active Server Pages oder ASP.NET gearbeitet haben, sollten Sie ASP.NET MVC sehr vertraut finden. ASP.NET MVC-Ansichten ähneln den Seiten in einer Active Server Pages-Anwendung sehr. Und genau wie eine herkömmliche ASP.NET Web Forms-Anwendung bietet ihnen ASP.NET MVC vollzugriff auf die umfangreichen Sprachen und Klassen, die vom .NET Framework bereitgestellt werden.
Ich hoffe, dass dieses Lernprogramm Ihnen ein Gefühl gibt, wie die Erfahrung beim Erstellen einer ASP.NET MVC-Anwendung ähnlich und anders ist als die Erfahrung beim Erstellen einer Active Server Pages- oder ASP.NET Web Forms-Anwendung.
Übersicht über die Filmdatenbankanwendung
Da unser Ziel darin besteht, die Dinge einfach zu halten, erstellen wir eine sehr einfache Filmdatenbankanwendung. Unsere einfache Filmdatenbank-Anwendung ermöglicht es uns, drei Dinge zu erledigen:
- Auflisten einer Reihe von Filmdatenbankdatensätzen
- Erstellen eines neuen Filmdatenbankdatensatzes
- Bearbeiten eines vorhandenen Filmdatenbankdatensatzes
Da wir die Dinge einfach halten möchten, nutzen wir die Mindestanzahl der Features des ASP.NET MVC-Frameworks, das zum Erstellen unserer Anwendung erforderlich ist. So nutzen wir beispielsweise die testgesteuerte Entwicklung nicht.
Um unsere Anwendung zu erstellen, müssen wir die folgenden Schritte ausführen:
- Erstellen des ASP.NET MVC-Webanwendungsprojekts
- Erstellen der Datenbank
- Erstellen des Datenbankmodells
- Erstellen des ASP.NET MVC-Controllers
- Erstellen der ASP.NET MVC-Ansichten
Vorbereitende Maßnahmen
Sie benötigen entweder Visual Studio 2008 oder Visual Web Developer 2008 Express, um eine ASP.NET MVC-Anwendung zu erstellen. Sie müssen auch das ASP.NET MVC-Framework herunterladen.
Wenn Sie nicht über Visual Studio 2008 verfügen, können Sie eine 90-tägige Testversion von Visual Studio 2008 von dieser Website herunterladen:
https://msdn.microsoft.com/vs2008/products/cc268305.aspx
Alternativ können Sie ASP.NET MVC-Anwendungen mit Visual Web Developer Express 2008 erstellen. Wenn Sie sich für die Verwendung von Visual Web Developer Express entscheiden, muss Service Pack 1 installiert sein. Sie können Visual Web Developer 2008 Express mit Service Pack 1 von dieser Website herunterladen:
Nachdem Sie Visual Studio 2008 oder Visual Web Developer 2008 installiert haben, müssen Sie das ASP.NET MVC-Framework installieren. Sie können das ASP.NET MVC-Framework von der folgenden Website herunterladen:
Hinweis
Anstatt das ASP.NET Framework und das ASP.NET MVC-Framework einzeln herunterzuladen, können Sie den Web platform Installer nutzen. Der Webplattform-Installer ist eine Anwendung, mit der Sie die installierten Anwendungen auf einfache Weise verwalten können.
Erstellen eines ASP.NET MVC-Webanwendungsprojekts
Beginnen wir mit dem Erstellen eines neuen ASP.NET MVC-Webanwendungsprojekts in Visual Studio 2008. Wählen Sie die Menüoption "Datei", "Neues Projekt " aus, und in Abbildung 1 wird das Dialogfeld "Neues Projekt" angezeigt. Wählen Sie Visual Basic als Programmiersprache aus, und wählen Sie die Projektvorlage ASP.NET MVC-Webanwendung aus. Geben Sie Ihrem Projekt den Namen MovieApp, und klicken Sie auf die Schaltfläche "OK".
Abbildung 01: Das Dialogfeld "Neues Projekt" (Klicken Sie, um das Bild in voller Größe anzuzeigen)
Stellen Sie sicher, dass Sie .NET Framework 3.5 in der Dropdownliste oben im Dialogfeld "Neues Projekt" auswählen oder die ASP.NET MVC-Webanwendungsprojektvorlage nicht angezeigt wird.
Immer wenn Sie ein neues MVC-Webanwendungsprojekt erstellen, fordert Visual Studio Sie auf, ein separates Komponententestprojekt zu erstellen. Das Dialogfeld in Abbildung 2 wird angezeigt. Da wir in diesem Lernprogramm keine Tests erstellen werden, weil Zeiteinschränkungen (und ja, wir sollten uns ein wenig schuldig fühlen), wählen Sie die Option "Nein " aus, und klicken Sie auf die Schaltfläche "OK ".
Hinweis
Visual Web Developer unterstützt keine Testprojekte.
Abbildung 02: Das Dialogfeld "Komponententestprojekt erstellen" (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Eine ASP.NET MVC-Anwendung verfügt über einen Standardsatz von Ordnern: einen Ordner "Modelle", "Ansichten" und "Controller". Sie können diesen Standardsatz von Ordnern im fenster Projektmappen-Explorer sehen. Wir müssen dateien zu jedem der Ordner "Modelle", "Ansichten" und "Controller" hinzufügen, um unsere Filmdatenbankanwendung zu erstellen.
Wenn Sie eine neue MVC-Anwendung mit Visual Studio erstellen, erhalten Sie eine Beispielanwendung. Da wir von Grund auf neu beginnen möchten, müssen wir den Inhalt für diese Beispielanwendung löschen. Sie müssen die folgende Datei und den folgenden Ordner löschen:
- Controller\HomeController.vb
- Views\Home
Erstellen der Datenbank
Wir müssen eine Datenbank erstellen, um unsere Filmdatenbankdatensätze zu speichern. Glücklicherweise enthält Visual Studio eine kostenlose Datenbank namens SQL Server Express. Führen Sie die folgenden Schritte aus, um die Datenbank zu erstellen:
- Klicken Sie im Projektmappen-Explorer Fenster mit der rechten Maustaste auf den App_Data Ordner, und wählen Sie die Menüoption "Hinzufügen", "Neues Element" aus.
- Wählen Sie die Kategorie "Daten " und dann die SQL Server-Datenbankvorlage aus (siehe Abbildung 3).
- Benennen Sie die neue Datenbank MoviesDB.mdf, und klicken Sie auf die Schaltfläche "Hinzufügen ".
Nachdem Sie Die Datenbank erstellt haben, können Sie eine Verbindung mit der Datenbank herstellen, indem Sie auf die MoviesDB.mdf Datei doppelklicken, die sich im Ordner App_Data befindet. Durch Doppelklicken auf die MoviesDB.mdf Datei wird das Server-Explorer-Fenster geöffnet.
Hinweis
Das Fenster "Server-Explorer" wird im Fall von Visual Web Developer als Datenbank-Explorer-Fenster bezeichnet.
Abbildung 03: Erstellen einer Microsoft SQL Server-Datenbank (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Als Nächstes müssen wir eine neue Datenbanktabelle erstellen. Klicken Sie im Fenster "Server-Explorer" mit der rechten Maustaste auf den Ordner "Tabellen", und wählen Sie die Menüoption " Neue Tabelle hinzufügen" aus. Wenn Sie diese Menüoption auswählen, wird der Datenbanktabellen-Designer geöffnet. Erstellen Sie die folgenden Datenbankspalten:
Spaltenname | Datentyp | NULL-Werte zulassen |
---|---|---|
Id | Int | False |
Titel | Nvarchar(100) | False |
Regisseur | Nvarchar(100) | False |
DateReleased | DateTime | False |
Die erste Spalte, die Spalte "ID", verfügt über zwei spezielle Eigenschaften. Zuerst müssen Sie die ID-Spalte als Primärschlüsselspalte markieren. Nachdem Sie die Spalte "ID" ausgewählt haben, klicken Sie auf die Schaltfläche "Primärschlüssel festlegen" (es ist das Symbol, das wie ein Schlüssel aussieht). Zweitens müssen Sie die ID-Spalte als Identitätsspalte markieren. Scrollen Sie im Eigenschaftenfenster Spalte nach unten zum Abschnitt "Identitätsspezifikation", und erweitern Sie ihn. Ändern Sie die Is Identity-Eigenschaft in den Wert "Ja". Wenn Sie fertig sind, sollte die Tabelle wie In Abbildung 4 aussehen.
Abbildung 04: Die Datenbanktabelle "Filme" (Klicken Sie, um das Bild in voller Größe anzuzeigen)
Der letzte Schritt besteht darin, die neue Tabelle zu speichern. Klicken Sie auf die Schaltfläche "Speichern" (das Symbol der Diskette), und geben Sie der neuen Tabelle den Namen "Filme".
Nachdem Sie die Tabelle erstellt haben, fügen Sie der Tabelle einige Filmeinträge hinzu. Klicken Sie im Fenster "Server-Explorer" mit der rechten Maustaste auf die Tabelle "Filme", und wählen Sie die Menüoption " Tabellendaten anzeigen" aus. Geben Sie eine Liste Ihrer Lieblingsfilme ein (siehe Abbildung 5).
Abbildung 05: Eingeben von Filmdatensätzen (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Erstellen des Modells
Als Nächstes müssen wir eine Reihe von Klassen erstellen, um unsere Datenbank darzustellen. Wir müssen ein Datenbankmodell erstellen. Wir nutzen das Microsoft Entity Framework, um die Klassen für unser Datenbankmodell automatisch zu generieren.
Hinweis
Das ASP.NET MVC-Framework ist nicht an das Microsoft Entity Framework gebunden. Sie können Ihre Datenbankmodellklassen erstellen, indem Sie eine Vielzahl von Object Relational Mapping (OR/M)-Tools wie LINQ to SQL, Subsonic und NHibernate nutzen.
Führen Sie die folgenden Schritte aus, um den Entitätsdatenmodell-Assistenten zu starten:
- Klicken Sie im fenster Projektmappen-Explorer mit der rechten Maustaste auf den Ordner "Modelle", und wählen Sie die Menüoption "Hinzufügen", "Neues Element" aus.
- Wählen Sie die Kategorie "Daten " und dann die Vorlage ADO.NET Entitätsdatenmodell aus.
- Geben Sie Ihrem Datenmodell den Namen MoviesDBModel.edmx , und klicken Sie auf die Schaltfläche "Hinzufügen ".
Nachdem Sie auf die Schaltfläche "Hinzufügen" geklickt haben, wird der Entitätsdatenmodell-Assistent angezeigt (siehe Abbildung 6). Führen Sie die folgenden Schritte aus, um den Assistenten abzuschließen:
- Wählen Sie im Schritt "Modellinhalt auswählen" die Option "Aus Datenbank generieren" aus.
- Verwenden Sie im Schritt "Datenverbindung auswählen" die MoviesDB.mdf Datenverbindung und den Namen "MoviesDBEntities" für die Verbindungseinstellungen. Klicken Sie auf die Schaltfläche Weiter.
- Erweitern Sie im Schritt "Datenbankobjekte auswählen" den Knoten "Tabellen", und wählen Sie die Tabelle "Filme" aus. Geben Sie den Namespace MovieApp.Models ein, und klicken Sie auf die Schaltfläche "Fertig stellen ".
Abbildung 06: Generieren eines Datenbankmodells mit dem Entitätsdatenmodell-Assistenten (Klicken, um das Bild in voller Größe anzuzeigen)
Nachdem Sie den Entitätsdatenmodell-Assistenten abgeschlossen haben, wird der Entitätsdatenmodell-Designer geöffnet. Der Designer sollte die Datenbanktabelle "Filme" anzeigen (siehe Abbildung 7).
Abbildung 07: Der Entitätsdatenmodell-Designer (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Wir müssen eine Änderung vornehmen, bevor wir fortfahren. Der Entitätsdaten-Assistent generiert eine Modellklasse namens Movies, die die Datenbanktabelle "Movies" darstellt. Da wir die Movies-Klasse verwenden, um einen bestimmten Film darzustellen, müssen wir den Namen der Klasse so ändern, dass sie "Movie" anstelle von "Movies" ist (Singular und nicht plural).
Doppelklicken Sie auf den Namen der Klasse auf der Designeroberfläche, und ändern Sie den Namen der Klasse von Movies in Movie. Nachdem Sie diese Änderung vorgenommen haben, klicken Sie auf die Schaltfläche "Speichern " (das Symbol des Diskettendatenträgers), um die Movie-Klasse zu generieren.
Erstellen des ASP.NET MVC-Controllers
Der nächste Schritt besteht darin, den ASP.NET MVC-Controller zu erstellen. Ein Controller ist dafür verantwortlich, zu steuern, wie ein Benutzer mit einer ASP.NET MVC-Anwendung interagiert.
Führen Sie folgende Schritte aus:
- Klicken Sie im fenster Projektmappen-Explorer mit der rechten Maustaste auf den Ordner "Controller", und wählen Sie die Menüoption "Hinzufügen", "Controller" aus.
- Geben Sie im Dialogfeld "Controller hinzufügen" den Namen "HomeController " ein, und aktivieren Sie das Kontrollkästchen " Aktionsmethoden hinzufügen" für Szenarien "Erstellen", "Aktualisieren" und "Details" (siehe Abbildung 8).
- Klicken Sie auf die Schaltfläche "Hinzufügen ", um dem Projekt den neuen Controller hinzuzufügen.
Nachdem Sie diese Schritte ausgeführt haben, wird der Controller in Listing 1 erstellt. Beachten Sie, dass sie Methoden namens Index, Details, Create und Edit enthält. In den folgenden Abschnitten fügen wir den erforderlichen Code hinzu, um diese Methoden zum Arbeiten zu erhalten.
Abbildung 08: Hinzufügen eines neuen ASP.NET MVC-Controllers (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Eintrag 1 – Controller\HomeController.vb
Public Class HomeController
Inherits System.Web.Mvc.Controller
'
' GET: /Home/
Function Index() As ActionResult
Return View()
End Function
'
' GET: /Home/Details/5
Function Details(ByVal id As Integer) As ActionResult
Return View()
End Function
'
' GET: /Home/Create
Function Create() As ActionResult
Return View()
End Function
'
' POST: /Home/Create
<AcceptVerbs(HttpVerbs.Post)> _
Function Create(ByVal collection As FormCollection) As ActionResult
Try
' TODO: Add insert logic here
Return RedirectToAction("Index")
Catch
Return View()
End Try
End Function
'
' GET: /Home/Edit/5
Function Edit(ByVal id As Integer) As ActionResult
Return View()
End Function
'
' POST: /Home/Edit/5
<AcceptVerbs(HttpVerbs.Post)> _
Function Edit(ByVal id As Integer, ByVal collection As FormCollection) As ActionResult
Try
' TODO: Add update logic here
Return RedirectToAction("Index")
Catch
Return View()
End Try
End Function
End Class
Auflisten von Datenbankdatensätzen
Die Index()-Methode des Home-Controllers ist die Standardmethode für eine ASP.NET MVC-Anwendung. Wenn Sie eine ASP.NET MVC-Anwendung ausführen, ist die Index()-Methode die erste Controllermethode, die aufgerufen wird.
Wir verwenden die Index()-Methode, um die Liste der Datensätze aus der Datenbanktabelle "Filme" anzuzeigen. Wir nutzen die datenbankmodellklassen, die wir zuvor erstellt haben, um die Filmdatenbankdatensätze mit der Index()-Methode abzurufen.
Ich habe die HomeController-Klasse in Listing 2 so geändert, dass sie ein neues privates Feld mit dem Namen _db enthält. Die MoviesDBEntities-Klasse stellt unser Datenbankmodell dar, und wir verwenden diese Klasse, um mit unserer Datenbank zu kommunizieren.
Ich habe auch die Index()-Methode in Listing 2 geändert. Die Index()-Methode verwendet die MoviesDBEntities-Klasse, um alle Filmdatensätze aus der Datenbanktabelle "Movies" abzurufen. Der Ausdruck _db. MovieSet.ToList() gibt eine Liste aller Filmdatensätze aus der Datenbanktabelle "Filme" zurück.
Die Liste der Filme wird an die Ansicht übergeben. Alles, was an die View()-Methode übergeben wird, wird als Ansichtsdaten an die Ansicht übergeben.
Eintrag 2 – Controller/HomeController.vb (geänderte Indexmethode)
Public Class HomeController
Inherits System.Web.Mvc.Controller
Private _db As New MoviesDBEntities()
Function Index() As ActionResult
Return View(_db.MovieSet.ToList())
End Function
End Class
Die Index()-Methode gibt eine Ansicht mit dem Namen Index zurück. Diese Ansicht muss erstellt werden, um die Liste der Filmdatenbankdatensätze anzuzeigen. Führen Sie folgende Schritte aus:
Sie sollten Ihr Projekt erstellen (wählen Sie die Menüoption " Erstellen", "Projektmappe erstellen") aus, bevor Sie das Dialogfeld "Ansicht hinzufügen" öffnen, oder in der Dropdownliste " Datenklassen anzeigen" werden keine Klassen angezeigt.
- Klicken Sie im Code-Editor mit der rechten Maustaste auf die Index()-Methode, und wählen Sie die Menüoption " Ansicht hinzufügen" aus (siehe Abbildung 9).
- Überprüfen Sie im Dialogfeld "Ansicht hinzufügen", ob das Kontrollkästchen " Erstellen einer stark typierten Ansicht" aktiviert ist.
- Wählen Sie in der Dropdownliste "Inhalte anzeigen" die Wertliste aus.
- Wählen Sie in der Dropdownliste "Datenklasse anzeigen" den Wert "MovieApp.Movie" aus.
- Klicken Sie auf die Schaltfläche "Hinzufügen", um die neue Ansicht zu erstellen (siehe Abbildung 10).
Nachdem Sie diese Schritte ausgeführt haben, wird dem Ordner "Views\Home" eine neue Ansicht mit dem Namen Index.aspx hinzugefügt. Der Inhalt der Indexansicht ist in Listing 3 enthalten.
Abbildung 09: Hinzufügen einer Ansicht aus einer Controlleraktion (Klicken, um das Bild in voller Größe anzuzeigen)
Abbildung 10: Erstellen einer neuen Ansicht mit dem Dialogfeld "Ansicht hinzufügen" (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of MovieApp.Movie))" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Index</h2>
<p>
<%=Html.ActionLink("Create New", "Create")%>
</p>
<table>
<tr>
<th></th>
<th>
Id
</th>
<th>
Title
</th>
<th>
Director
</th>
<th>
DateReleased
</th>
</tr>
<% For Each item In Model%>
<tr>
<td>
<%=Html.ActionLink("Edit", "Edit", New With {.id = item.Id})%> |
<%=Html.ActionLink("Details", "Details", New With {.id = item.Id})%>
</td>
<td>
<%= Html.Encode(item.Id) %>
</td>
<td>
<%= Html.Encode(item.Title) %>
</td>
<td>
<%= Html.Encode(item.Director) %>
</td>
<td>
<%= Html.Encode(String.Format("{0:g}", item.DateReleased)) %>
</td>
</tr>
<% Next%>
</table>
</asp:Content>
In der Indexansicht werden alle Filmdatensätze aus der Datenbanktabelle "Filme" in einer HTML-Tabelle angezeigt. Die Ansicht enthält eine For Each-Schleife, die jeden Film durchläuft, der durch die ViewData.Model-Eigenschaft dargestellt wird. Wenn Sie Ihre Anwendung ausführen, indem Sie die F5-TASTE drücken, wird die Webseite in Abbildung 11 angezeigt.
Abbildung 11: Die Indexansicht (Klicken Sie, um das Bild in voller Größe anzuzeigen)
Erstellen neuer Datenbankdatensätze
Die Indexansicht, die wir im vorherigen Abschnitt erstellt haben, enthält einen Link zum Erstellen neuer Datenbankdatensätze. Lassen Sie uns fortfahren und die Logik implementieren und die ansicht erstellen, die zum Erstellen neuer Filmdatenbankdatensätze erforderlich ist.
Der Startcontroller enthält zwei Methoden namens Create(). Die erste Create()-Methode hat keine Parameter. Diese Überladung der Create()-Methode wird verwendet, um das HTML-Formular zum Erstellen eines neuen Filmdatenbankdatensatzes anzuzeigen.
Die zweite Create()-Methode weist einen FormCollection-Parameter auf. Diese Überladung der Create()-Methode wird aufgerufen, wenn das HTML-Formular zum Erstellen eines neuen Films auf dem Server gepostet wird. Beachten Sie, dass diese zweite Create()-Methode über ein AcceptVerbs-Attribut verfügt, das verhindert, dass die Methode aufgerufen wird, es sei denn, ein HTTP-Post-Vorgang wird ausgeführt.
Diese zweite Create()-Methode wurde in der aktualisierten HomeController-Klasse in Listing 4 geändert. Die neue Version der Create()-Methode akzeptiert einen Movie-Parameter und enthält die Logik zum Einfügen eines neuen Films in die Datenbanktabelle Filme.
Hinweis
Beachten Sie das Bind-Attribut. Da die Film-ID-Eigenschaft nicht aus dem HTML-Formular aktualisiert werden soll, müssen wir diese Eigenschaft explizit ausschließen.
Eintrag 4 – Controller\HomeController.vb (geänderte Create-Methode)
Function Create() As ActionResult
Return View()
End Function
<AcceptVerbs(HttpVerbs.Post)> _
Function Create(<_bind28_exclude3a_3d_22_id22_29_> ByVal movieToCreate As Movie) As ActionResult
If Not ModelState.IsValid Then
Return View()
End If
_db.AddToMovieSet(movieToCreate)
_db.SaveChanges()
Return RedirectToAction("Index")
End Function
<!--_bind28_exclude3a_3d_22_id22_29_-->
Visual Studio erleichtert das Erstellen des Formulars zum Erstellen eines neuen Filmdatenbankdatensatzes (siehe Abbildung 12). Führen Sie folgende Schritte aus:
- Klicken Sie im Code-Editor mit der rechten Maustaste auf die Create()-Methode, und wählen Sie die Menüoption " Ansicht hinzufügen" aus.
- Vergewissern Sie sich, dass das Kontrollkästchen "Erstellen einer stark typierten Ansicht" aktiviert ist.
- Wählen Sie in der Dropdownliste "Inhalt anzeigen" den Wert "Erstellen" aus.
- Wählen Sie in der Dropdownliste "Datenklasse anzeigen" den Wert "MovieApp.Movie" aus.
- Klicken Sie auf die Schaltfläche "Hinzufügen ", um die neue Ansicht zu erstellen.
Abbildung 12: Hinzufügen der Ansicht "Erstellen" (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Visual Studio generiert die Ansicht in Listing 5 automatisch. Diese Ansicht enthält ein HTML-Formular, das Felder enthält, die den einzelnen Eigenschaften der Movie-Klasse entsprechen.
Eintrag 5 – Views\Home\Create.aspx
<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of MovieApp.Movie)" %>
<asp:Content ID="Content3" ContentPlaceHolderID="TitleContent" runat="server">
Create
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="MainContent" runat="server">
<h2>Create</h2>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% Using Html.BeginForm()%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="Id">Id:</label>
<%= Html.TextBox("Id") %>
<%= Html.ValidationMessage("Id", "*") %>
</p>
<p>
<label for="Title">Title:</label>
<%= Html.TextBox("Title") %>
<%= Html.ValidationMessage("Title", "*") %>
</p>
<p>
<label for="Director">Director:</label>
<%= Html.TextBox("Director") %>
<%= Html.ValidationMessage("Director", "*") %>
</p>
<p>
<label for="DateReleased">DateReleased:</label>
<%= Html.TextBox("DateReleased") %>
<%= Html.ValidationMessage("DateReleased", "*") %>
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% End Using %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
Hinweis
Das vom Dialogfeld "Ansicht hinzufügen" generierte HTML-Formular generiert ein ID-Formularfeld. Da es sich bei der Spalte "ID" um eine Spalte "Identität" handelt, benötigen wir dieses Formularfeld nicht, und Sie können es sicher entfernen.
Nachdem Sie die Ansicht "Erstellen" hinzugefügt haben, können Sie der Datenbank neue Filmeinträge hinzufügen. Führen Sie Ihre Anwendung aus, indem Sie F5 drücken und auf den Link "Neu erstellen" klicken, um das Formular in Abbildung 13 anzuzeigen. Wenn Sie das Formular ausfüllen und übermitteln, wird ein neuer Filmdatenbankdatensatz erstellt.
Beachten Sie, dass Sie die Formularüberprüfung automatisch erhalten. Wenn Sie ein Veröffentlichungsdatum für einen Film nicht eingeben oder ein ungültiges Veröffentlichungsdatum eingeben, wird das Formular erneut angezeigt, und das Veröffentlichungsdatumsfeld ist hervorgehoben.
Abbildung 13: Erstellen eines neuen Filmdatenbankdatensatzes (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Bearbeiten vorhandener Datenbankdatensätze
In den vorherigen Abschnitten haben wir erläutert, wie Sie neue Datenbankeinträge auflisten und erstellen können. In diesem letzten Abschnitt wird erläutert, wie Sie vorhandene Datenbankdatensätze bearbeiten können.
Zuerst müssen wir das Bearbeitungsformular generieren. Dieser Schritt ist einfach, da Visual Studio automatisch das Bearbeitungsformular für uns generiert. Öffnen Sie die HomeController.vb Klasse im Visual Studio-Code-Editor, und führen Sie die folgenden Schritte aus:
- Klicken Sie im Code-Editor mit der rechten Maustaste auf die Edit()-Methode, und wählen Sie die Menüoption " Ansicht hinzufügen" aus (siehe Abbildung 14).
- Aktivieren Sie das Kontrollkästchen mit der Bezeichnung "Erstellen einer stark typierten Ansicht".
- Wählen Sie in der Dropdownliste "Inhalte anzeigen" den Wert "Bearbeiten" aus.
- Wählen Sie in der Dropdownliste "Datenklasse anzeigen" den Wert "MovieApp.Movie" aus.
- Klicken Sie auf die Schaltfläche "Hinzufügen ", um die neue Ansicht zu erstellen.
Durch Ausführen dieser Schritte wird dem Ordner "Views\Home" eine neue Ansicht mit dem Namen Edit.aspx hinzugefügt. Diese Ansicht enthält ein HTML-Formular zum Bearbeiten eines Filmdatensatzes.
Abbildung 14: Hinzufügen der Bearbeitungsansicht (Klicken, um das Bild in voller Größe anzuzeigen)
Hinweis
Die Bearbeitungsansicht enthält ein HTML-Formularfeld, das der Movie Id-Eigenschaft entspricht. Da Sie nicht möchten, dass Benutzer den Wert der Id-Eigenschaft bearbeiten, sollten Sie dieses Formularfeld entfernen.
Schließlich müssen wir den Startcontroller so ändern, dass er das Bearbeiten eines Datenbankdatensatzes unterstützt. Die aktualisierte HomeController-Klasse ist in Listing 6 enthalten.
Eintrag 6 – Controller\HomeController.vb (Bearbeitungsmethoden)
Function Edit(ByVal id As Integer) As ActionResult
Dim movieToEdit = (From m In _db.MovieSet _
Where m.Id = id _
Select m).First()
Return View(movieToEdit)
End Function
<AcceptVerbs(HttpVerbs.Post)> _
Function Edit(ByVal movieToEdit As Movie) As ActionResult
Dim originalMovie = (From m In _db.MovieSet _
Where m.Id = movieToEdit.Id _
Select m).First()
If Not ModelState.IsValid Then
Return View(originalMovie)
End If
_db.ApplyPropertyChanges(originalMovie.EntityKey.EntitySetName, movieToEdit)
_db.SaveChanges()
Return RedirectToAction("Index")
End Function
In Listing 6 habe ich beiden Überladungen der Edit()-Methode zusätzliche Logik hinzugefügt. Die erste Edit()-Methode gibt den Filmdatenbankdatensatz zurück, der dem an die Methode übergebenen ID-Parameter entspricht. Die zweite Überladung führt die Aktualisierungen eines Filmdatensatzes in der Datenbank aus.
Beachten Sie, dass Sie den ursprünglichen Film abrufen und dann ApplyPropertyChanges() aufrufen müssen, um den vorhandenen Film in der Datenbank zu aktualisieren.
Zusammenfassung
Der Zweck dieses Lernprogramms bestand darin, Ihnen ein Gefühl der Erfahrung beim Erstellen einer ASP.NET MVC-Anwendung zu geben. Ich hoffe, dass Sie festgestellt haben, dass das Erstellen einer ASP.NET MVC-Webanwendung sehr ähnlich ist wie das Erstellen einer Active Server Pages oder ASP.NET Anwendung.
In diesem Lernprogramm haben wir nur die grundlegenden Features des ASP.NET MVC-Frameworks untersucht. In zukünftigen Lernprogrammen tauchen wir tiefer in Themen wie Controller, Controlleraktionen, Ansichten, Anzeigen von Daten und HTML-Hilfsprogrammen ein.