ASP.NET MVC on web-ohjelmointiin tarkoitettu ASP.NET:iin perustuva ohjelmistokehys. Nimensä mukaisesti se noudattaa MVC-arkkitehtuurin periaatteita. Lisätietoa löytyy englanniksi mm. ASP.NET MVC:n virallisilta sivuilta ja suomeksi täältä.

MVC

MVC tulee sanoista Model - View - Controller eli Malli - Näkymä - Kontrolleri(/ohjain). MVC-periaatteen mukaisesti sovellus jaetaan näihin kolmeen kerrokseen, joiden tehtävät ovat

Malli huolehtii tiedon käsittelystä Näkymä huolehtii tietojen esittämisestä (käyttöliittymä) Kontrolleri toimii linkkinä mallin ja näkymän välillä muuttaen niitä käyttäjän käskyjen mukaan

MVC:n toteutus ASP.NET MVC:ssä

Malli voi olla esim. tietokannasta haettua tietoa, tiedosto tai vaikka koodissa luotu olio. Näkymä voi olla esim. websivu (html), xml-tiedosto, json-muotoinen teksti tai kuva. Kontrollerit ovat erityisiä luokkia, jotka periytyvät Controller-luokasta (System.Web.Mvc.Controller) ja joiden nimi on "Controller"-loppuinen.

Kontrollerit muodostuvat yhdestä tai useammasta toiminnosta (action), jotka ovat julkisia metodeita. Yksi olennainen osa on vielä Reititys (routing), jonka tehtävä on sivun osoitteen perusteella ohjata pyyntö oikeaan kontrolleriin ja sen toimintoon.

Sivun elinkaari

Kaikki lähtee siitä, että käyttäjä tekee sivupyynnön. Tämä voi tapahtua vaikkapa naputtelemalla osoite selaimeen, seuraamalla linkkiä tai lähettämällä sivustolla oleva lomake.
Jos web-sovellus ei ole vielä käynnissä (kukaan ei ole vieraillut sivustolla vähään aikaan), se käynnistetään. Tällöin kutsutaan Global.asax.cs-tiedostossa olevaa Application_Start -metodia. Tuolta kutsutaan edelleen metodia RegisterRoutes, jossa rekisteröidään Reititys.
Pyyntö annetaan MvcHandler-luokan käsiteltäväksi, joka käy läpi kaikki reittimääritykset järjestyksessä ja yrittää sovittaa osoitetta (esim. tuotteet/1/tiedot) niihin. Sopivan reitin löytyessä MvcHandler luo objektin RouteData, johon sijoitetaan reitissä olevat parametrit, kuten controller ja action (kontrolleri ja toiminto).
Seuraavaksi kutsutaan MvcHandler-luokan metodia ProcessRequest (toteuttaa liittymän IHttpHandler metodin), josta edelleen kutsutaan ControllerFactoryn (luokka, joka toteuttaa liittymän IControllerFactory) metodia CreateController. Tuo metodi palauttaa Kontrollerit (RouteData-objektista löytyvän controller -arvon perusteella).
Kontrollerit kutsutaan metodia Execute (toteuttaa liittymän IController metodin), joka selvittää oikean Kontrollerit RouteData-objektista löytyvän action-arvon perusteella. Toimintometodia kutsutaan käyttäen parametreina RouteData-objektista löytyviä arvoja.
Kontrollerit palauttaa objektin tyyppiä ActionResult, mikä voi olla esim. websivu, kuva tai json-teksti.

Controller-luokan (josta kontrollerit yleensä periytyvät) metodi View palauttaa ViewResult-tyyppisen objektin, joka käyttää näkymänä websivua. Tällöin käytetään kontrollerin ominaisuutta ViewFactory palauttamaan websivu oikeasta paikasta (tiedostosta).