Reitit määritellään Global.asax.cs -tiedostossa, jossa on oletuksena seuraavanlainen metodi

public static void RegisterRoutes(RouteCollection routes)
{
	routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

	routes.MapRoute("Default","{controller}/{action}/{id}",new{ controller="Home",action="Index",id=UrlParameter.Optional });
}

RouteCollection -luokan metodilla MapRoute lisätään reittimäärityksiä. Sillä on kuusi erilaista versiota

RouteCollection.MapRoute(string name, string url)
RouteCollection.MapRoute(string name, string url, object defaults)
RouteCollection.MapRoute(string name, string url, string[] namespaces)
RouteCollection.MapRoute(string name, string url, object defaults, object constraints)
RouteCollection.MapRoute(string name, string url, object defaults, string[] namespaces)
RouteCollection.MapRoute(string name, string url, object defaults, object constraints, string[] namespaces)

name reitin yksilöllinen nimi.
url reitin osoite. Osoitteessa voi olla nimettyjä parametreja, jotka laitetaan { ja } -merkkien väliin.
defaults nimettyjen parametrien oletusarvot.
namespaces nimiavaruudet, joihin reittiä yritetään soveltaa.
constraints nimettyjen parametrien rajoitukset.

Kun käyttäjä tulee sivustolle, pyydettyä osoitetta (ilman domainia, esim.  http://www.minunsivut.fi/blogi/2010/lokakuu/ -> blogi/2010/lokakuu) yritetään sovittaa reittimäärityksiin ja poimia siitä parametreja. Jotta reititys onnistuisi, tulee siitä aina saada poimittua parametrit controller ja action (noiden arvojen ei kuitenkaan tarvitse olla osoitteessa, vaan ne voi antaa oletusarvoina).

Oletusreitin

routes.MapRoute("Default", "{controller}/{action}/{id}", new{ controller="Home", action="Index", id=UrlParameter.Optional });

arvoja

name Default
url {controller}/{action}/{id}
defaults controller=Home, action=Index, id on valinnainen

soveltaen voisi saada seuraavanlaisia parametrien arvoja eri osoitteille

URL Parametrit Kutsuttava kontrollerin metodi (esim.)
/ oletusarvot: controller = Home, action = Index HomeController.Index()
/home/ controller = home, oletusarvo: action = Index HomeController.Index()
/tuotteet/listaa/ controller = tuotteet, action = listaa TuotteetController.Listaa()
/tuotteet/osta/123/ controller = tuotteet, action = osta, id = 123 TuotteetController.Osta(int id)
TuotteetController.Osta(string id)

URL ja parametrit

Url:stä voidaan poimia parametreja, jotka siis ympäröidään { ja } -merkeillä. Parametrit eivät voi olla peräkkäin vaan niiden välissä pitää olla jokin erotinmerkki (kuten kauttaviiva /).

Alla pari esimerkkiä

Url selaimessa Url reittimäärityksessä
/blogi/2010-10 /blogi/{vuosi}-{kuukausi}
/tuotteet/123/muokkaa /{controller}/{id}/{action}

Parametriin voi kaapata kaiken jäljellä olevan tekstin laittamalla { -merkin jälkeen tähden

blogi/{*merkinnan-nimi}

Oletusarvot

Oletusarvot annetaan anonyymina tyyppinä eli

new { jokutekstiparametri = "arvo", jokulukuparametri = 123 }

Nimiavaruudet

Jos useammassa nimiavaruudessa oleva kontrolleri/metodi sopii johonkin reittiin, voidaan reittimääritys rajoittaa tarkastamaan vain tietyissä nimiavaruuksissa (tai osioissa) olevat kontrollerit

new[]{ "OmaMvcSovellus.Areas.Blogi", "OmaMvcSovellus.Areas.Foorumi" }

Parametrien rajoitukset

Parametreille voi antaa rajoittavan ehdon, joka on säännöllinen lauseke (regular expression, RegEx).

Esim. jos halutaan, että parametri (esimerkissä id) voi olla ainoastaan numero, saadaan se RegEx:llä \d+

routes.MapRoute("tuotteet","tuotteet/{id}/{action}",new{controller="Tuotteet",action="Tiedot"},new{id=@"\d+"});
Url Kutsuttava kontrolleri/metodi
/tuotteet/123 TuotteetController.Tiedot(int id)
/tuotteet/123/tiedot TuotteetController.Tiedot(int id)
/tuotteet/123/poista TuotteetController.Poista(int id)
/tuotteet/abc/ Ei reittiä, koska abc ei ole numero

Navigointi

Social Media