mk-prg-net \net \asp \ mvc \routing

Routing

→URL's auf Actions nach festgelegten Mustern aufbauen.

Allgemeine Infos dazu hier:http://msdn.microsoft.com/en-us/library/cc668201.aspx
Mit den Grundeinstellungen ordnet ein Webserver einem URL immer eine Dateiressource zu (HTML-File). In MVC ist diese Zuordnung zu grob. Hier muss über einen URL die Action- Methode eines Controllers ausgewählt und parametriert werden. Dies wird durch die Definition von Routen erreicht.

Die Routen werden definiert im App_Start- Verzeichnis unter RouteConfig.cs. Die Definitionen erfolgen Mittels der MapHttpRoute - Methode des globalen Objektes routes . Dabei ist mindestens ein Name für die Route, sowie ein URL- Muster zu definieren. URL Muster bestehen aus Segmenten, die durch / getrennt sind:

SEGMENT1/SEGMENT2/.../SEGMENTn
Segmente können feste Werte oder Platzhalter sein. Die Paltzhalter werden dabei in geschweifte Klammern gesetzt:
SEGMENT1/{PLATZHALTER1}/.../SEGMENTn

Ein Muster wird wie folgt auf eine URL gemapt:
  1. Übereinstimmende Segmente in URL und Muster werden einander zugeordnet. Die Reihenfolge im Muster darf dabei nicht verletzt werden
  2. Korrespondieren Platzhalter mit noch nicht zugeordneten Segmenten der URL, dann werden diese Segmente als Textwerte in einem Dictionary eingetragen, wobei der Bezeichner des Platzhalters der Schlüssel ist
  3. Die MVC- Laufzeit sucht in dem Dictionary mindestens zwei Einträge:
    1. Eintrag unter dem Schlüssel controller: Der Wert wird der String Controller angehängt. Er stellt den Namen der Controllerklasse dar
    2. Eintrag unter dem Schlüssel action: Der Wert ist der Name der Action- Methode innerhalb der Controller- Klasse.
  4. Platzhalter, die nach dem Platzhalter für die Action- Methode folgen, stehen für die Parameter der Action- Methode. Die Bezeichner der Platzhalter müssen mit den Parameternamen übereinstimmen.
Z.B. ordnet das folgende Pattern den URL http://localhost:49353/Graphic/MoveTriangle/100 den Aufruf der Action GraphicController.MoveTriangle(100) zu:
routes.MapRoute(
  name: "MyRoute1",
  url: "{controller}/{action}/{translation}"
);