ASP.NET MVC 3 Tutorial #2–Was ein Controller so alles kann.
Im vorigen Teil habe ich damit begonnen, die Architektur des MVC Patterns kurz vorzustellen. Nun wollen wir uns dem Controller – beziehungsweise vielmehr dem URL-Mapping – widmen. Die gute Nachricht vorweg: Asp.NET MVC mapped die URLs per default bereits sehr schön auf die Controller und deren Methoden. Man kann also davon ausgehen das Controller/Methodenname im Browser ähnlich vorkommen. In der folgenden Abbildung wird die Startseite angezeigt. Diese kann auch über /Home/Index aufgerufen werden. Für die Startseite ist dies jedoch nicht notwendig da die leere URL standardgemäß auf /Home/Index zeigt.
Prinzipiell kann man sich folgendes Schema vorstellen:
https://myurl.com/Controller/Action?Parameters
Der Controller in der URL ist in diesem Fall der jeweilige Controller – z.B. der HomeController (wobei in der URL die Silbe “Controller” weg fällt) und Action ist die Methode “Index” am Controller. In Asp.NET MVC werden diese Routings, auf welche verwiesen wird, in der Datei “Global.asax.cs” geregelt. Der Default-Route, welcher in diesem Fall verwendet wird, sieht folgendermaßen aus:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Dies kann z.B. “Home/Index” sein. Die Routes werde ich in einem späteren Artikel noch genauer vorstellen. Damit kann man sehr einfach Browser-freundliche URLs erzeugen. Wenn ich nun einen neuen Controller einfüge und diesen “ForceController” nenne, so kann ich auf die Index-Methode durch Angabe der URL /Force darauf zugreifen. Wie bereits oben dargestellt: "Index” als Action ist laut unserem Controller der Standard.
Natürlich kann ich den Controller auch um viele Methoden erweitern. Wenn ich eine Action “HelloWorld” einfüge, so kann ich diese mit “/Force/HelloWorld” aufrufen.
Mit der Methode “GetSomeId” übergebe ich einen Parameter an den Controller. In diesem Fall ist es die ID 5. Diese sende ich im View auch an den Browser zurück.
Außerdem ist es möglich, Parameter nicht mitzusenden – in diesem Fall als Nullable.
Im kommenden Post werden wir uns ansehen wie dieser Controller nun auf Quellcode-Seite aussieht.