Freigeben über


ASP.NET MVC-Controller – Übersicht (VB)

von Stephen Walther

In diesem Tutorial führt Stephen Walther Sie in ASP.NET MVC-Controller ein. Sie erfahren, wie Sie neue Controller erstellen und verschiedene Arten von Aktionsergebnissen zurückgeben.

In diesem Tutorial wird das Thema ASP.NET MVC-Controller, Controlleraktionen und Aktionsergebnisse erläutert. Nachdem Sie dieses Tutorial abgeschlossen haben, erfahren Sie, wie Controller verwendet werden, um die Art und Weise zu steuern, wie ein Besucher mit einer ASP.NET MVC-Website interagiert.

Grundlegendes zu Controllern

Die MVC-Verantwortlichen sind für die Beantwortung von Anforderungen verantwortlich, die an eine ASP.NET MVC-Website gestellt werden. Jede Browseranforderung wird einem bestimmten Controller zugeordnet. Stellen Sie sich beispielsweise vor, Sie geben die folgende URL in die Adressleiste Ihres Browsers ein:

http://localhost/Product/Index/3

In diesem Fall wird ein Controller mit dem Namen ProductController aufgerufen. Der ProductController ist für das Generieren der Antwort auf die Browseranforderung verantwortlich. Beispielsweise kann der Controller eine bestimmte Ansicht zurück an den Browser zurückgeben, oder der Controller leitet den Benutzer an einen anderen Controller um.

Listing 1 enthält einen einfachen Controller namens ProductController.

Listing1 – Controller\ProductController.vb

Public Class ProductController
    Inherits System.Web.Mvc.Controller

    '
    ' GET: /Products/

    Function Index()
        ' Add action logic here
        Return View()
    End Function

End Class

Wie Sie in Listing 1 sehen können, ist ein Controller nur eine Klasse (eine Visual Basic .NET- oder C#-Klasse). Ein Controller ist eine Klasse, die von der System.Web.Mvc.Controller-Basisklasse abgeleitet wird. Da ein Controller von dieser Basisklasse erbt, erbt ein Controller mehrere nützliche Methoden kostenlos (wir diskutieren diese Methoden gleich).

Grundlegendes zu Controlleraktionen

Ein Controller macht Controlleraktionen verfügbar. Eine Aktion ist eine Methode für einen Controller, die aufgerufen wird, wenn Sie eine bestimmte URL in die Adressleiste Ihres Browsers eingeben. Stellen Sie sich beispielsweise vor, Sie stellen eine Anforderung für die folgende URL:

http://localhost/Product/Index/3

In diesem Fall wird die Index()-Methode für die ProductController-Klasse aufgerufen. Die Index()-Methode ist ein Beispiel für eine Controlleraktion.

Eine Controlleraktion muss eine öffentliche Methode einer Controllerklasse sein. Visual Basic.NET-Methoden sind standardmäßig öffentliche Methoden. Stellen Sie fest, dass jede öffentliche Methode, die Sie einer Controllerklasse hinzufügen, automatisch als Controlleraktion verfügbar gemacht wird (Sie müssen dabei vorsichtig sein, da eine Controlleraktion von jeder Person im Universum aufgerufen werden kann, indem Sie einfach die richtige URL in eine Browseradressleiste eingeben).

Es gibt einige zusätzliche Anforderungen, die von einer Controlleraktion erfüllt werden müssen. Eine Methode, die als Controlleraktion verwendet wird, kann nicht überladen werden. Darüber hinaus kann eine Controlleraktion keine statische Methode sein. Abgesehen davon können Sie so gut wie jede Methode als Controlleraktion verwenden.

Grundlegendes zu Aktionsergebnissen

Eine Controlleraktion gibt ein so genanntes Aktionsergebnis zurück. Ein Aktionsergebnis ist das, was eine Controlleraktion als Reaktion auf eine Browseranforderung zurückgibt.

Das ASP.NET MVC-Framework unterstützt verschiedene Arten von Aktionsergebnissen, darunter:

  1. ViewResult: Stellt HTML und Markup dar.
  2. EmptyResult: Stellt kein Ergebnis dar.
  3. RedirectResult: Stellt eine Umleitung zu einer neuen URL dar.
  4. JsonResult: Stellt ein JavaScript-Objektnotationsergebnis dar, das in einer AJAX-Anwendung verwendet werden kann.
  5. JavaScriptResult: Stellt ein JavaScript-Skript dar.
  6. ContentResult: Stellt ein Textergebnis dar.
  7. FileContentResult: Stellt eine herunterladbare Datei (mit dem binären Inhalt) dar.
  8. FilePathResult: Stellt eine herunterladbare Datei (mit einem Pfad) dar.
  9. FileStreamResult: Stellt eine herunterladbare Datei (mit einem Dateistream) dar.

Alle diese Aktionsergebnisse erben von der ActionResult-Basisklasse.

In den meisten Fällen gibt eine Controlleraktion ein ViewResult zurück. Beispielsweise gibt die Indexcontrolleraktion in Listing 2 ein ViewResult zurück.

Eintrag 2 : Controller\BookController.vb

Public Class BookController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return View()
    End Function

End Class

Wenn eine Aktion ein ViewResult zurückgibt, wird HTML an den Browser zurückgegeben. Die Index()-Methode in Listing 2 gibt eine Ansicht mit dem Namen Index an den Browser zurück.

Beachten Sie, dass die Index()-Aktion in Listing 2 kein ViewResult() zurückgibt. Stattdessen wird die View()-Methode der Controller-Basisklasse aufgerufen. Normalerweise geben Sie ein Aktionsergebnis nicht direkt zurück. Stattdessen rufen Sie eine der folgenden Methoden der Controller-Basisklasse auf:

  1. Ansicht: Gibt ein ViewResult-Aktionsergebnis zurück.
  2. Umleitung: Gibt ein RedirectResult-Aktionsergebnis zurück.
  3. RedirectToAction: Gibt ein RedirectToRouteResult-Aktionsergebnis zurück.
  4. RedirectToRoute: Gibt ein RedirectToRouteResult-Aktionsergebnis zurück.
  5. JSON: Gibt ein JsonResult-Aktionsergebnis zurück.
  6. JavaScriptResult: Gibt ein JavaScriptResult zurück.
  7. Inhalt: Gibt ein ContentResult-Aktionsergebnis zurück.
  8. Datei: Gibt ein FileContentResult-, FilePathResult- oder FileStreamResult-Objekt zurück, abhängig von den Parametern, die an die -Methode übergeben werden.

Wenn Sie also eine Ansicht an den Browser zurückgeben möchten, rufen Sie die View()-Methode auf. Wenn Sie den Benutzer von einer Controlleraktion zu einer anderen umleiten möchten, rufen Sie die RedirectToAction()-Methode auf. Beispielsweise zeigt die Aktion Details() in Listing 3 entweder eine Ansicht an oder leitet den Benutzer zur Index()-Aktion um, je nachdem, ob der Id-Parameter einen Wert aufweist.

Eintrag 3 : CustomerController.vb

Public Class CustomerController
    Inherits System.Web.Mvc.Controller

    Function Details(ByVal id As Integer?)
        If Not id.HasValue Then
            Return RedirectToAction("Index")
        End If

        Return View()
    End Function
    Function Index()
        Return View()
    End Function

End Class

Das Ergebnis der ContentResult-Aktion ist speziell. Sie können das ContentResult-Aktionsergebnis verwenden, um ein Aktionsergebnis als Nur-Text zurückzugeben. Die Index()-Methode in Listing 4 gibt beispielsweise eine Nachricht als Nur-Text und nicht als HTML zurück.

Eintrag 4: Controller\StatusController.vb

StatusController

System.Web.Mvc.Controller

Public Class StatusController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return Content("Hello World!")
    End Function

End Class

Wenn die StatusController.Index()-Aktion aufgerufen wird, wird keine Ansicht zurückgegeben. Stattdessen wird der unformatierte Text "Hallo Welt!" an den Browser zurückgegeben.

Wenn eine Controlleraktion ein Ergebnis zurückgibt, das kein Aktionsergebnis ist ( z. B. ein Datum oder eine ganze Zahl ), wird das Ergebnis automatisch in ein ContentResult umschlossen. Wenn beispielsweise die Index()-Aktion des WorkController in Listing 5 aufgerufen wird, wird das Datum automatisch als ContentResult zurückgegeben.

Eintrag 5 : WorkController.vb

Public Class WorkController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return DateTime.Now
    End Function

End Class

Die Index()-Aktion in Listing 5 gibt ein DateTime-Objekt zurück. Das ASP.NET MVC-Framework konvertiert das DateTime-Objekt in eine Zeichenfolge und umschließt den DateTime-Wert automatisch in einem ContentResult. Der Browser empfängt das Datum und die Uhrzeit als Nur-Text.

Zusammenfassung

In diesem Tutorial wurden die Konzepte der ASP.NET MVC-Controller, Controlleraktionen und Controlleraktionsergebnisse vorgestellt. Im ersten Abschnitt haben Sie gelernt, wie Sie einem ASP.NET MVC-Projekt neue Controller hinzufügen. Als Nächstes haben Sie gelernt, wie öffentliche Methoden eines Controllers dem Universum als Controlleraktionen zur Verfügung stehen. Abschließend wurden die verschiedenen Arten von Aktionsergebnissen erläutert, die von einer Controlleraktion zurückgegeben werden können. Insbesondere wurde erläutert, wie Ein ViewResult, RedirectToActionResult und ContentResult von einer Controlleraktion zurückgegeben werden.