Hinzufügen eines Controllers (2012)
von Rick Anderson
Hinweis
Hier finden Sie eine aktualisierte Version dieses Tutorials, die ASP.NET MVC 5 und Visual Studio 2013 verwendet. Es ist sicherer, viel einfacher zu befolgen und zeigt mehr Features.
MVC steht für model-view-controller. MVC ist ein Muster für die Entwicklung von Anwendungen, die gut entworfen, testbar und einfach zu verwalten sind. MVC-basierte Anwendungen enthalten:
- M odels: Klassen, die die Daten der Anwendung darstellen und Validierungslogik verwenden, um Geschäftsregeln für diese Daten zu erzwingen.
- V iews: Vorlagendateien, die Ihre Anwendung zum dynamischen Generieren von HTML-Antworten verwendet.
- C-Ontroller: Klassen, die eingehende Browseranforderungen verarbeiten, Modelldaten abrufen und dann Ansichtsvorlagen angeben, die eine Antwort an den Browser zurückgeben.
Wir behandeln alle diese Konzepte in dieser Tutorialreihe und zeigen Ihnen, wie Sie sie zum Erstellen einer Anwendung verwenden.
Beginnen wir mit dem Erstellen einer Controllerklasse. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Ordner Controller, und wählen Sie dann Controller hinzufügen aus.
Nennen Sie Ihren neuen Controller "HelloWorldController". Behalten Sie die Standardvorlage als leeren MVC-Controller bei, und klicken Sie auf Hinzufügen.
Beachten Sie in Projektmappen-Explorer, dass eine neue Datei mit dem Namen HelloWorldController.cs erstellt wurde. Die Datei ist in der IDE geöffnet.
Ersetzen Sie den Inhalt der Datei durch den folgenden Code.
using System.Web;
using System.Web.Mvc;
namespace MvcMovie.Controllers
{
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "This is my <b>default</b> action...";
}
//
// GET: /HelloWorld/Welcome/
public string Welcome()
{
return "This is the Welcome action method...";
}
}
}
Die Controllermethoden geben als Beispiel eine HTML-Zeichenfolge zurück. Der Controller hat den Namen HelloWorldController
, und die erste Methode oben heißt Index
. Rufen Wir sie aus einem Browser auf. Führen Sie die Anwendung aus (drücken Sie F5 oder STRG+F5). Fügen Sie im Browser "HelloWorld" an den Pfad in der Adressleiste an. (In der abbildung unten ist es z. B. http://localhost:1234/HelloWorld.
) Die Seite im Browser sieht wie der folgende Screenshot aus. In der obigen Methode hat der Code direkt eine Zeichenfolge zurückgegeben. Sie haben das System angewiesen, nur HTML zurückzugeben, und das hat es getan!
ASP.NET MVC ruft je nach eingehender URL verschiedene Controllerklassen (und unterschiedliche Aktionsmethoden darin) auf. Die von ASP.NET MVC verwendete Standard-URL-Routinglogik verwendet ein Format wie dieses, um zu bestimmen, welcher Code aufgerufen werden soll:
/[Controller]/[ActionName]/[Parameters]
Der erste Teil der URL bestimmt die auszuführende Controllerklasse. Daher wird /HelloWorld der HelloWorldController
-Klasse zugeordnet. Der zweite Teil der URL bestimmt die Aktionsmethode für die auszuführende Klasse. Daher würde /HelloWorld/Index dazu führen, dass die Index
-Methode der HelloWorldController
-Klasse ausgeführt wird. Beachten Sie, dass wir nur zu /HelloWorld navigieren mussten und die Index
-Methode standardmäßig verwendet wurde. Dies liegt daran, dass eine Methode namens Index
die Standardmethode ist, die auf einem Controller aufgerufen wird, wenn sie nicht explizit angegeben ist.
Navigieren Sie zu http://localhost:xxxx/HelloWorld/Welcome
. Die Welcome
-Methode wird ausgeführt und gibt die Zeichenfolge „This is the Welcome action method...“ zurück. Die MVC-Standardzuordnung ist /[Controller]/[ActionName]/[Parameters]
. Bei dieser URL ist HelloWorld
der Controller und Welcome
die Aktionsmethode. Sie haben den Teil [Parameters]
der URL noch nicht verwendet.
Lassen Sie uns das Beispiel geringfügig ändern, sodass Sie einige Parameterinformationen von der URL an den Controller übergeben können (z. B. /HelloWorld/Welcome?name=Scott&numtimes=4). Ändern Sie Ihre Welcome
Methode so, dass sie zwei Parameter enthält, wie unten gezeigt. Beachten Sie, dass der Code das optionale C#-Parameterfeature verwendet, um anzugeben, dass der numTimes
Parameter standardmäßig auf 1 festgelegt werden soll, wenn für diesen Parameter kein Wert übergeben wird.
public string Welcome(string name, int numTimes = 1) {
return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}
Führen Sie Ihre Anwendung aus, und navigieren Sie zur Beispiel-URL (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4)
. Sie können für name
und numtimes
in der URL verschiedene Werte ausprobieren. Das ASP.NET MVC-Modellbindungssystem ordnet die benannten Parameter aus der Abfragezeichenfolge in der Adressleiste automatisch Parametern in Ihrer Methode zu.
In beiden Beispielen hat der Controller den "VC"-Teil von MVC ausgeführt, d. h. die Sicht und der Controller funktionieren. Der Controller gibt direkt HTML zurück. Normalerweise möchten Sie nicht, dass Controller HTML direkt zurückgeben, da dies sehr umständlich ist. Stattdessen verwenden wir in der Regel eine separate Ansichtsvorlagendatei, um die HTML-Antwort zu generieren. Sehen wir uns als Nächstes an, wie wir dies tun können.