Zugreifen auf Modelldaten anhand eines Controllers (VB)
von Rick Anderson
In diesem Lernprogramm lernen Sie die Grundlagen zum Erstellen einer ASP.NET MVC-Webanwendung mithilfe von Microsoft Visual Web Developer 2010 Express Service Pack 1, einer kostenlosen Version von Microsoft Visual Studio. Bevor Sie beginnen, stellen Sie sicher, dass Sie die unten aufgeführten Voraussetzungen installiert haben. Sie können alle installieren, indem Sie auf den folgenden Link klicken: Web Platform Installer. Alternativ können Sie die erforderlichen Komponenten mit den folgenden Links einzeln installieren:
- Voraussetzungen für Visual Studio Web Developer Express SP1
- ASP.NET MVC 3 Tools Update
- SQL Server Compact 4.0(Runtime + Tools-Unterstützung)
Wenn Sie Visual Studio 2010 anstelle von Visual Web Developer 2010 verwenden, installieren Sie die erforderlichen Komponenten, indem Sie auf den folgenden Link klicken: Visual Studio 2010-Voraussetzungen.
Ein Visual Web Developer-Projekt mit VB.NET Quellcode steht diesem Thema zur Verfügung. Laden Sie die VB.NET-Version herunter. Wenn Sie C# bevorzugen, wechseln Sie zu der C#-Version dieses Lernprogramms.
In diesem Abschnitt erstellen Sie eine neue MoviesController
Klasse und schreiben Code, der die Filmdaten abruft und im Browser mithilfe einer Ansichtsvorlage anzeigt. Achten Sie darauf, ihre Anwendung zu erstellen, bevor Sie fortfahren.
Klicken Sie mit der rechten Maustaste auf den Ordner " Controller ", und erstellen Sie einen neuen MoviesController
Controller. Wählen Sie die folgenden Optionen:
- Controllername: MoviesController. (Dies ist die Standardeinstellung.)
- Vorlage: Controller mit Lese-/Schreibaktionen und Ansichten mithilfe von Entity Framework.
- Modellklasse: Movie (MvcMovie.Models).
- Datenkontextklasse: MovieDBContext (MvcMovie.Models).
- Ansichten: Razor (CSHTML). (Der Standardwert.)
Klicken Sie auf Hinzufügen. Visual Web Developer erstellt die folgenden Dateien und Ordner:
- Eine MoviesController.vb Datei im Ordner "Controller" des Projekts.
- Ein Ordner "Filme" im Ordner "Ansichten" des Projekts.
- Create.vbhtml, Delete.vbhtml, Details.vbhtml, Edit.vbhtml und Index.vbhtml im neuen Ordner Views\Movies.
Der ASP.NET MVC 3-Gerüstmechanismus erstellt automatisch die CRUD-Aktionsmethoden (Erstellen, Lesen, Aktualisieren und Löschen) und Ansichten für Sie. Sie verfügen jetzt über eine voll funktionsfähige Webanwendung, mit der Sie Filmeinträge erstellen, auflisten, bearbeiten und löschen können.
Führen Sie die Anwendung aus, und navigieren Sie zum Movies
Controller, indem Sie /Movies an die URL in der Adressleiste Ihres Browsers anfügen. Da die Anwendung auf das Standardrouting (definiert in der Datei "Global.asax ") basiert, wird die Browseranforderung http://localhost:xxxxx/Movies
an die Standardaktionsmethode Index
des Movies
Controllers weitergeleitet. Mit anderen Worten, die Browseranforderung http://localhost:xxxxx/Movies
ist effektiv mit der Browseranforderung http://localhost:xxxxx/Movies/Index
identisch. Das Ergebnis ist eine leere Liste von Filmen, da Sie noch keine hinzugefügt haben.
Erstellen eines Films
Klicken Sie auf den Link Neu erstellen. Geben Sie einige Details zu einem Film ein, und klicken Sie dann auf die Schaltfläche "Erstellen ".
Wenn Sie auf die Schaltfläche "Erstellen " klicken, wird das Formular auf dem Server gepostet, auf dem die Filminformationen in der Datenbank gespeichert werden. Sie werden dann zur URL "/Movies " umgeleitet, wo der neu erstellte Film im Eintrag angezeigt wird.
Erstellen Sie ein paar weitere Filmeinträge. Testen Sie die Links Edit (Bearbeiten), Details und Delete (Löschen), die alle funktionsbereit sind.
Untersuchen des generierten Codes
Öffnen Sie die Datei "Controller\MoviesController.vb ", und überprüfen Sie die generierte Index
Methode. Unten sehen Sie einen Teil des Filmcontrollers mit der Index
Methode.
Public Class MoviesController
Inherits System.Web.Mvc.Controller
Private db As MovieDBContext = New MovieDBContext
'
' GET: /Movies/
Function Index() As ViewResult
Return View(db.Movies.ToList())
End Function
In der folgenden Zeile aus der MoviesController
Klasse wird ein Filmdatenbankkontext instanziiert, wie zuvor beschrieben. Sie können den Filmdatenbankkontext verwenden, um Filme abzufragen, zu bearbeiten und zu löschen.
Private db As MovieDBContext = New MovieDBContex
Eine Anforderung an den Movies
Controller gibt alle Einträge in der Movies
Tabelle der Filmdatenbank zurück und übergibt dann die Ergebnisse an die Index
Ansicht.
Stark typierte Modelle und das @model Schlüsselwort
Weiter oben in diesem Lernprogramm haben Sie gesehen, wie ein Controller Daten oder Objekte mithilfe des ViewBag
Objekts an eine Ansichtsvorlage übergeben kann. Dies ViewBag
ist ein dynamisches Objekt, das eine bequeme späte Möglichkeit zum Übergeben von Informationen an eine Ansicht bietet.
ASP.NET MVC bietet auch die Möglichkeit, stark typierte Daten oder Objekte an eine Ansichtsvorlage zu übergeben. Dieser stark typierte Ansatz ermöglicht eine bessere Kompilierungszeitüberprüfung ihres Codes und umfangreicherer IntelliSense im Visual Web Developer-Editor. Wir verwenden diesen Ansatz mit der Ansichtsvorlage "Class" und "MoviesController
Index.vbhtml".
Beachten Sie, wie der Code ein List
Objekt erstellt, wenn es die View
Hilfsmethode in der Index
Aktionsmethode aufruft. Der Code übergibt dann diese Movies
Liste vom Controller an die Ansicht:
Function Index() As ViewResult
Return View(db.Movies.ToList())
End Function
Indem Sie oben in der Ansichtsvorlagendatei eine @ModelType
Anweisung einfügen, können Sie den Objekttyp angeben, den die Ansicht erwartet. Wenn Sie den Filmcontroller erstellt haben, enthielt Visual Web Developer automatisch die folgende @model
Anweisung oben in der Datei Index.vbhtml :
@ModelType IEnumerable(Of MvcMovie.Movie)
Mit dieser @ModelType
Direktive können Sie auf die Liste der Filme zugreifen, die der Controller mithilfe eines Model
stark typierten Objekts an die Ansicht übergeben hat. Beispielsweise durchläuft der Code in der Vorlage Index.vbhtml die Filme durch eine foreach
Anweisung über das stark typierte Model
Objekt:
@For Each item In Model
Dim currentItem = item
@<tr>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Title)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.ReleaseDate)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Genre)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Price)
</td>
<td>
@Html.ActionLink("Edit", "Edit", New With {.id = currentItem.ID}) |
@Html.ActionLink("Details", "Details", New With {.id = currentItem.ID}) |
@Html.ActionLink("Delete", "Delete", New With {.id = currentItem.ID})
</td>
</tr>
Next
Da das Model
Objekt stark typiert ist (als IEnumerable<Movie>
Objekt), wird jedes item
Objekt in der Schleife als Movie
Typ eingegeben. Dies bedeutet unter anderem, dass Sie die Kompilierungszeitüberprüfung des Codes und die vollständige IntelliSense-Unterstützung im Code-Editor erhalten:
Arbeiten mit SQL Server Compact
Entity Framework Code First hat festgestellt, dass die Datenbank Verbindungszeichenfolge, die bereitgestellt wurde, auf eine Movies
Datenbank verweist, die noch nicht vorhanden war, sodass Code Zuerst die Datenbank automatisch erstellt hat. Sie können überprüfen, ob sie erstellt wurde, indem Sie im Ordner App_Data suchen. Wenn die Datei "Movies.sdf" nicht angezeigt wird, klicken Sie auf der Symbolleiste Projektmappen-Explorer auf die Schaltfläche "Alle Dateien anzeigen", klicken Sie auf die Schaltfläche "Aktualisieren", und erweitern Sie dann den Ordner "App_Data".
Doppelklicken Sie auf Movies.sdf, um den Server-Explorer zu öffnen. Erweitern Sie dann den Ordner "Tabellen ", um die Tabellen anzuzeigen, die in der Datenbank erstellt wurden.
Hinweis
Wenn beim Doppelklicken auf "Movies.sdf" eine Fehlermeldung angezeigt wird, stellen Sie sicher, dass Sie Visual Studio 2010 SP1 Tools für SQL Server Compact 4.0 installiert haben. (Links zur Software finden Sie in der Liste der Voraussetzungen in Teil 1 dieser Lernprogrammreihe.) Wenn Sie die Version jetzt installieren, müssen Sie Visual Web Developer schließen und erneut öffnen.
Es gibt zwei Tabellen, eine für den Movie
Entitätssatz und dann die EdmMetadata
Tabelle. Die EdmMetadata
Tabelle wird vom Entity Framework verwendet, um zu bestimmen, wann das Modell und die Datenbank nicht synchronisiert sind.
Klicken Sie mit der rechten Maustaste auf die Movies
Tabelle, und wählen Sie " Tabellendaten anzeigen" aus, um die von Ihnen erstellten Daten anzuzeigen.
Klicken Sie mit der rechten Maustaste auf die Movies
Tabelle, und wählen Sie "Tabellenschema bearbeiten" aus.
Beachten Sie, wie das Schema der Movies
Tabelle der Movie
zuvor erstellten Klasse zugeordnet ist. Entity Framework Code First created this schema for you based on your Movie
class.
Wenn Sie fertig sind, schließen Sie die Verbindung. (Wenn Sie die Verbindung nicht schließen, wird möglicherweise beim nächsten Ausführen des Projekts ein Fehler angezeigt).
Sie verfügen jetzt über die Datenbank und eine einfache Eintragsseite, um Inhalte davon anzuzeigen. Im nächsten Lernprogramm untersuchen wir den Rest des Gerüstcodes und fügen eine SearchIndex
Methode und eine SearchIndex
Ansicht hinzu, mit der Sie in dieser Datenbank nach Filmen suchen können.