Freigeben über


Hinzufügen einer Ansicht (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:

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 ändern wir die HelloWorldController Klasse so, dass eine Ansichtsvorlagendatei verwendet wird, um den Prozess der Generierung von HTML-Antworten auf einen Client sauber zu kapseln.

Beginnen wir mit der Verwendung einer Ansichtsvorlage mit der Index Methode in der HelloWorldController Klasse. Derzeit gibt die Index Methode eine Zeichenfolge mit einer Nachricht zurück, die in der Controllerklasse hartcodiert ist. Ändern Sie die Index Methode, um ein View Objekt zurückzugeben, wie in der folgenden Abbildung dargestellt:

Public Function Index() As ActionResult
            Return View()
        End Function

Nun fügen wir unserem Projekt eine Ansichtsvorlage hinzu, die wir mit der Index Methode aufrufen können. Klicken Sie dazu mit der rechten Maustaste in die Index Methode, und klicken Sie auf " Ansicht hinzufügen".

IndexAddView

Das Dialogfeld "Ansicht hinzufügen" wird angezeigt. Behalten Sie die Standardeinträge bei, und klicken Sie auf die Schaltfläche "Hinzufügen ".

3addView

Der Ordner "MvcMovie\Views\HelloWorld " und die Datei "MvcMovie\Views\HelloWorld\Index.vbhtml " werden erstellt. Sie können sie in Projektmappen-Explorer sehen:

SolnExpHelloWorldIndx

Fügen Sie html-Code unter dem <h2> Tag hinzu. Die geänderte Datei "MvcMovie\Views\HelloWorld\Index.vbhtml " wird unten angezeigt.

@Code
    ViewData("Title") = "Index"
End Code

<h2>Index</h2>

<b>Hello</b> World!

Führen Sie die Anwendung aus, und navigieren Sie zum Controller "Hello world" (http://localhost:xxxx/HelloWorld). Die Index Methode in Ihrem Controller hat nicht viel Arbeit ausgeführt. Sie hat einfach die Anweisung return View()ausgeführt, die angibt, dass wir eine Ansichtsvorlagendatei verwenden wollten, um eine Antwort auf den Client zu rendern. Da der Name der zu verwendenden Ansichtsvorlagendatei nicht explizit angegeben wurde, ASP.NET MVC standardmäßig die Index.vbhtml-Ansichtsdatei im Ordner \Views\HelloWorld verwendet. Die folgende Abbildung zeigt die in der Ansicht hartcodierte Zeichenfolge.

3HelloWorld

Sieht ziemlich gut aus. Beachten Sie jedoch, dass die Titelleiste des Browsers "Index" und der große Titel auf der Seite "Meine MVC-Anwendung" lautet. Ändern wir diese.

Ändern von Ansichten und Layoutseiten

Als Erstes ändern wir den Text "Meine MVC-Anwendung". Dieser Text wird freigegeben und auf jeder Seite angezeigt. Es erscheint tatsächlich nur an einem Ort in unserem Projekt, obwohl es sich auf jeder Seite in unserer Anwendung befindet. Wechseln Sie in Projektmappen-Explorer zum Ordner "/Views/Shared", und öffnen Sie die Datei _Layout.vbhtml. Diese Datei wird als Layoutseite bezeichnet und ist die freigegebene "Shell", die alle anderen Seiten verwenden.

Notieren Sie sich die @RenderBody() Codezeile am Ende der Datei. RenderBody ist ein Platzhalter, in dem alle seiten, die Sie erstellen, auf der Layoutseite "umschlossen" angezeigt werden. Ändern Sie die <h1> Überschrift von " Meine MVC-Anwendung" in "MVC Movie App".

<div id="title">
        <h1>MVC Movie App</h1>
  </div>

Führen Sie die Anwendung aus, und notieren Sie sich jetzt "MVC Movie App". Klicken Sie auf den Link "Info ", und auf dieser Seite wird auch "MVC Movie App" angezeigt.

Die vollständige datei _Layout.vbhtml wird unten angezeigt:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewData("Title")</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
</head>
<body>
    <div class="page">
        <header>
            <div id="title">
                <h1>MVC Movie App</h1>
            </div>
            <div id="logindisplay">
                @Html.Partial("_LogOnPartial")
            </div>
            <nav>
                <ul id="menu">
                    <li>@Html.ActionLink("Home", "Index", "HelloWorld")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
                </ul>
            </nav>
        </header>
        <section id="main">
            @RenderBody()
        </section>
        <footer>
        </footer>
    </div>
</body>
</html>

Jetzt ändern wir den Titel der Indexseite (Ansicht).

@Code
    ViewData("Title") = "Movie List"
End Code

<h2>My Movie List</h2>

<p>Hello from our View Template!</p>

Öffnen Sie MvcMovie\Views\HelloWorld\Index.vbhtml. Es gibt zwei Stellen, an denen eine Änderung vorgenommen werden kann: zuerst der Text, der im Titel des Browsers und dann in der sekundären Kopfzeile (dem <h2> Element) angezeigt wird. Wir nehmen sie etwas anders vor, damit Sie sehen können, welche Codebits in welchem Teil der App geändert werden.

Führen Sie die Anwendung aus, und navigieren Sie zuhttp://localhost:xx/HelloWorld. Sie sehen, dass sich der Browsertitel, die primäre Überschrift und die sekundären Überschriften geändert haben. Es ist einfach, große Änderungen an Ihrer Anwendung mit kleinen Änderungen an einer Ansicht vorzunehmen. (Wenn Änderungen im Browser nicht angezeigt werden, werden möglicherweise zwischengespeicherte Inhalte angezeigt. Drücken Sie STRG+F5 in Ihrem Browser, um zu erzwingen, dass die Antwort vom Server geladen wird.)

3_MyMovieList

Unser kleines Stück "Daten" (in diesem Fall die "Hallo Welt!"-Nachricht) ist jedoch hartcodiert. Unsere MVC-Anwendung hat V (Ansichten) und wir haben C (Controller), aber noch kein M (Modell). Kurz gesagt, wir werden durchgehen, wie eine Datenbank erstellt und Modelldaten daraus abgerufen werden.

Übergeben von Daten vom Controller an die Ansicht

Bevor wir zu einer Datenbank wechseln und über Modelle sprechen, sprechen wir zunächst über das Übergeben von Informationen vom Controller an eine Ansicht. Wir möchten übergeben, was eine Ansichtsvorlage erfordert, um eine HTML-Antwort auf einen Client zu rendern. Diese Objekte werden in der Regel von einer Controllerklasse an eine Ansichtsvorlage erstellt und übergeben, und sie sollten nur die Daten enthalten, die die Ansichtsvorlage benötigt – und nicht mehr.

Zuvor mit der HelloWorldController Klasse hat die Welcome Aktionsmethode einen name Und einen numTimes Parameter ausgeführt und dann die Parameterwerte an den Browser ausgegeben. Anstatt dass der Controller diese Antwort weiterhin direkt rendert, werden wir diese Daten stattdessen in einen Beutel für die Ansicht einfügen. Controller und Views können ein ViewBag Objekt verwenden, um diese Daten zu speichern. Dies wird automatisch an eine Ansichtsvorlage übergeben und verwendet, um die HTML-Antwort mithilfe des Inhalts der Tasche als Daten zu rendern. Auf diese Weise geht es dem Verantwortlichen um eine Sache und die Ansichtsvorlage mit einer anderen – was uns ermöglicht, eine saubere "Trennung der Bedenken" innerhalb der Anwendung aufrechtzuerhalten.

Alternativ können wir eine benutzerdefinierte Klasse definieren und dann eine Instanz dieses Objekts eigenständig erstellen, mit Daten füllen und an die Ansicht übergeben. Dies wird häufig als ViewModel bezeichnet, da es sich um ein benutzerdefiniertes Modell für die Ansicht handelt. Bei kleinen Datenmengen funktioniert der ViewBag jedoch hervorragend.

Kehren Sie zur HelloWorldController.vb Datei zurück, um die Welcome Methode innerhalb des Controllers zu ändern, um die Nachricht und NumTimes in den ViewBag zu setzen. Der ViewBag ist ein dynamisches Objekt. Dies bedeutet, dass Sie alles einfügen können, was Sie wollen. Der ViewBag hat keine definierten Eigenschaften, bis Sie etwas darin einfügen.

Der Vollständige HelloWorldController.vb mit der neuen Klasse in derselben Datei.

Namespace MvcMovie
    Public Class HelloWorldController
        Inherits System.Web.Mvc.Controller
        '
        ' GET: /HelloWorld

        Function Index() As ActionResult
            Return View()
        End Function

        Public Function Welcome(ByVal name As String, Optional ByVal numTimes As Integer = 1) As ActionResult
            ViewBag.Message = "Hello " & name
            ViewBag.NumTimes = numTimes
            Return View()
        End Function

    End Class
End Namespace

Jetzt enthält unser ViewBag Daten, die automatisch an die Ansicht übergeben werden. Auch hier könnten wir alternativ unser eigenes Objekt wie folgt übergeben haben, wenn wir gefallen haben:

return View(myCustomObject)

Jetzt benötigen wir eine WelcomeView Vorlage! Führen Sie die Anwendung aus, damit der neue Code kompiliert wird. Schließen Sie den Browser, klicken Sie mit der rechten Maustaste in die Welcome Methode, und klicken Sie dann auf " Ansicht hinzufügen".

So sieht das Dialogfeld "Ansicht hinzufügen" aus.

3AddWelcomeView

Fügen Sie den folgenden Code unter dem Element in der <h2> neuen Willkommensseite hinzu.vbhtml-Datei. Wir machen eine Schleife und sagen "Hello" so oft, wie der Benutzer sagt, wir sollten!

@Code 
    For i As Integer = 0 To ViewBag.NumTimes
@<h3> @ViewBag.Message @i.ToString </h3>
     Next i
 End Code

Führen Sie die Anwendung aus, und navigieren Sie zu http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4

Jetzt werden Daten aus der URL übernommen und automatisch an den Controller übergeben. Der Controller verpackt die Daten in ein Model Objekt und übergibt das Objekt an die Ansicht. Die Ansicht als die Daten werden dem Benutzer als HTML angezeigt.

3Hello_Scott_4

Das war also eine Art eines „M“ für Modell, jedoch nicht der Art Datenbank. Lassen Sie uns das Gelernte umsetzen und eine Filmdatenbank erstellen.