Før du begynner
Installer Visual Studio 2013 (dersom du ikke har det allerede). Det greieste er å installere Visual Studio Express for Web, men alle andre 2013-utgaver funker fint gitt at man har haket av for web-pakka under installasjon.
Det er også smart å installere ReSharper (en extension til Visual Studio som hjelper til med masse forskjellig. Nærmest obligatorisk for enhver .NET-utvikler :))
Hva er ASP.NET MVC?
ASP.NET MVC er Microsoft sitt foretrukne web-rammeverk. ASP står for active server pages, .NET er betegnelsen på Microsoft sitt kode-rammeverk og MVC (model-view-controller) er et etterhvert veldig vanlig arkitekturmønster for webutvikling.
Backend-kode skrives vanligvis i C# (det er også mulig i F#) og frontend-kode skrives i en kombinasjon av C#, HTML og JavaScript.
Model-View-Controller
MVC-mønsteret går ut på at man skiller data-modellen, prosessering av handlinger (requests) og visningen av data i forskjellige komponenter:
I praksis kan det bety at en bruker går inn på http://kjellshjemmeside.com/home/vis. -> nettleseren sender en http-request til serveren, som MVC-rammeverket automatisk videresenter til HomeController sin Vis-metode. Vis-metoden fyller en Modell med data og sender denne modellen til Vis-viewet. I Vis-viewet blir denne dataen kombinert med HTML-markup som rammeverket så konverterer til en helt ordninær HTML-side som sendes tilbake til nettleseren.
I .NET MVC benyttes Model-, View- og Controller-begrepene om konkrete filer hvor Model og Controller er helt vanlige C#-klasser, mens Viewet er en .cshtml-fil som hvor man kan skrive HTML og C#-kode om hverandre. View-filene kompileres av en såkalt ViewEngine som heter Razor, og blir deretter til helt vanlige HTML-filer.
Model
Modellen er en helt vanlig C#-klasse, vanligvis postfixet med Model. Dette har ingen funksjon, men det er greit for utviklere å vite at det er snakk om en modell. Den er gjerne en representasjon av et helt vanlig ting i forretnings-domenet til applikasjonen vår, for eksempel en bil:
public class CarModel
{
public int Id { get; set; }
public string Make { get; set; }
public int ProductionYear { get; set; }
}
Controller
En Controller er også en helt vanlig C#-klasse som må postfixes med Controller og arve fra base-klassen Controller
Metodene returnerer et svar av typen ActionResult. Hver metode på en Controller tilsvarer en Action som kan brukes til å sende ut en hel side, eller deler av en side.
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Show(int carId)
{
model = _carRepository.Get(carId);
return View(model);
}
}
MVC-rammeverket benytter konvensjon til å kalle riktig Action fra riktig url.
For eksempel vil minurl.mittdomene/home/show lede til Show()
minurl.mittdomene/home eller minurl.mittdomene/home/index lede til Index(). Dette er også konvensjonsbasert - dersom Action ikke er spesifisert leter den automatisk etter Index.
View
Viewet er selve siden som vises og er en blanding av HTML og C#. Man kan spesifisere i en Action hvilket View som skal benyttes eller man kan la MVC-rammeverket forsøke å finne ut av det selv. Dersom man ikke spesifiserer vil MVC lete i Views/<controllername>/
Views/Home/Show.cshtml@model MyMvcApplication.Models.CarModel <h2>@Model.Make</h2> <p>Id: @Model.Id</p> <p>Year: @Model.ProductionYear</p>
C#-kode prefixes med @ for at Razor (view-kompilatoren) skal vite at det skal tolkes som C#.
Oppgaver
Resten av introduksjonen vil bestå av oppgaver. Fasiten på hver oppgave finner man på GitHub i MVC-intro-repositoriet. Hver oppgave er en egen branch.
Fasit
Fasit til hver oppgave ligger som en egen branch på GitHub.
For å klone repositoriet kan man bruke Git, GitHub for Windows.
Kommando for å klone:
git clone https://github.com/bekkopen/ASP-.NET-MVC-intro.git
cd .\ASP-.NET-MVC-intro