ASP.NET MVC Web Development

Slides:



Advertisements
Verwante presentaties
SharePoint denk in blokken Ton Stegeman.
Advertisements

Les 2 Vandaag •Vragen over voorgaande stof •Plaatjes •Tabellen •Links •Huiswerk.
Databases via internet
Van domeinklasse tot implementatie
HTML Les 1: Introductie HTML
Klassen en objecten.
Hoofdstuk 2 Hallo, C# !.
HTML elements en CSS Commando's Lenonardo Lyceum centrum voor deeltijds onderwijs Hoboken Schooljaar
De koektrommel of de grabbelton
Webmaster Training: CSS CSS2 & XHTML By Frederik Van Outryve.
Wolter Kaper - Ruby on Rails Webtoepassing ontwerpen Webprogrammeren, week 1.
Wolter Kaper - AJAX en Javascript via Rails Deel 1 en 2.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Windows Applicaties Bouwen met Visual Studio.NET Sijmen Koffeman Development Consultant Microsoft.
Client-side scripting. 1.Scripting in webpagina’s 1. Verschillende talen VB: toepassingen in Windowsomgeving VBA: toepassingen in MS-Office VBScript internet.
MET DANK AAN COLLEGA’S IN DEN LANDE ! vee 2012
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Starten met PHP Dynamischer bouwen.
MVC in de praktijk Jeroen Swart.NET architect, Quintor
 De Loader Class wordt gebruikt om afbeeldingen (jpg, png, gifs) of swf’s tijdens het afspelen van het programma te laden. Ze staan dus niet in de Library.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
INFITT01 - Internettechnologie WEEK 3. Programma Sessies JSP.
Java & het Web Programma: Databases (jdbc, JNDI, ORM, JPA)
Java & het Web Programma: 3rd party libraries Standard actions (E)xpression (L)anguage.
Java & het Web Programma: Contexts Listeners Scope/Attributes Thread safety.
Java & het Web Programma: Sessies JSP. Stateless vs. Stateful(1) HTTP is stateless WAT IS STATELESS?
Java & het Web Programma: JSP. JSP....herhaling Welke van de volgende expressions is geldig/ongeldig? %>
Uw website beheren was nog nooit zo makkelijk... In het menu vindt u alle opties waarmee u uw site volledig kunt beheren.
GUI & classes Een Gui in een class steken en het object gebruiken.
Windows applicatieontwikkeling
Software Development fundamentals
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Letterfrequentie turven
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
Gameprogrammeren: Willekeurigheid (Randomness)
Omdat we op onze eigen account programmeren
Gameprogrammeren: Herhalingen
Gameprogrammeren: Properties
Tinpro015b-les6 Templates.
Voorbeeld: Simulatie van bewegende deeltjes
Gameprogrammeren: Abstracte klassen
Gameprogrammeren: Interfaces
Gameprogrammeren: Klassen en objecten
ASP.NET MVC Web Development
ASP.NET MVC Web Development
Software Development fundamentals
ASP.NET MVC Web Development
ASP.NET MVC Web Development
ASP.NET MVC Views.
Software Development fundamentals
– Software development fundamentals
Java Masterclass Sar Maroof.
Software Development fundamentals
Software Development fundamentals
– Software development fundamentals
Powershell & HTML.
Software Development fundamentals
Software Development fundamentals
Gameprogrammeren: Arrays
Software Development fundamentals
Transcript van de presentatie:

ASP.NET MVC Web Development Controllers & Views | www.starwave.nl/mq

Vandaag Wat we hebben geleerd in hoofdstuk 2 (Controllers) En hoofdstuk 3 (Views) Eventuele vragen over deze hoofdstukken Keuze voor ‘project’

Controllers public class HomeController : Controller { public ActionResult Index() return View(); } Deze controller reageert op een request naar http://www.mijnsite.nl en geeft /views/index.cshtml terug

Parameters public string Check(string name) { if(name == Robert) return “Wajow”; return “Probeer een andere naam”; } /Check?name=Robert De parameter in de URL wordt automatisch omgezet naar de parameter van de method, zolang de naam hetzelfde is.

Int id public string Details(int id) { string message = “Het ID is " + id; return message; } Nu is het voldoende om naar /Details/24 te gaan. 24 zal in de id parameter worden geplaatst, hoe kan dit?

RouteConfig public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } Je ziet dat id als optionele parameter al in de standaard route configuratie staat!

HttpUtility.HtmlEncode public string Welcome(string name, int numTimes = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes); } Waarom HtmlEncode gebruiken? Om te voorkomen dat een kwaadwillende ongewenste dingen in de parameters zet, zoals javascript, en jij dit doorgeeft aan de pagina of database. HtmlEncode verandert bijv. <script> in <script> (wat er in de browser gewoon uitziet als <script>)

Views Views zijn eigenlijk niet veel meer dan HTML templates. + een beetje programmeercode. Views benader je in principe nooit direct /Views/Home/Index.cshtml is niet hoe je de homepage van je site bekijkt! Model bevat gegevens, logica, regels, het domein View bepaalt de weergave. Bijv. genereren van een webpagina, document, windows form Controller Context van MVC: 10 jaar geleden in java/oop voor desktop apps

Views De code is Razor. Lijkt op C#, maar dan geïntegreerd met HTML (daarom ook .cshtml). Razor code begint altijd met @ <h2>Welcome</h2> <ul> @for (int i = 0; i < ViewBag.NumTimes; i++) { <li>@ViewBag.Message</li> } </ul> Model bevat gegevens, logica, regels, het domein View bepaalt de weergave. Bijv. genereren van een webpagina, document, windows form Controller Context van MVC: 10 jaar geleden in java/oop voor desktop apps

3 soorten Views Layout view View Partial View Master page? Web Form? User Control? Model bevat gegevens, logica, regels, het domein View bepaalt de weergave. Bijv. genereren van een webpagina, document, windows form Controller Context van MVC: 10 jaar geleden in java/oop voor desktop apps

3 soorten views We gaan het vandaag alleen hebben over gewone views. Layout views behoeven ook niet veel uitleg. Partial views zijn wat interessanter (en ingewikkelder)…maar een onderwerp voor later. Model bevat gegevens, logica, regels, het domein View bepaalt de weergave. Bijv. genereren van een webpagina, document, windows form Controller Context van MVC: 10 jaar geleden in java/oop voor desktop apps

Views returnen Standaard wordt de view gebruikt met dezelfde naam als de method. Dus in dit geval Index.cshtml. public ActionResult Index() { return View(); } Maar je kunt ook een andere view gebruiken: NotIndex.cshtml return View("NotIndex"); Model bevat gegevens, logica, regels, het domein View bepaalt de weergave. Bijv. genereren van een webpagina, document, windows form Controller Context van MVC: 10 jaar geleden in java/oop voor desktop apps

Strongly typed views Je kunt bovenaan de view opgeven welk type (class) je als model gebruikt in die view: @model IEnumerable<MvcMusicStore.Models.Album> <ul> @foreach (Album p in Model) { <li>@p.Title</li> } </ul> Model bevat gegevens, logica, regels, het domein View bepaalt de weergave. Bijv. genereren van een webpagina, document, windows form Controller Context van MVC: 10 jaar geleden in java/oop voor desktop apps

Strongly typed views Je moet het model object dan wel meegeven aan de view: public ActionResult AlbumsByGenre(int id) { List<Album> albums = db.GetAlbumsByGenreId(id); return View(albums); } Model bevat gegevens, logica, regels, het domein View bepaalt de weergave. Bijv. genereren van een webpagina, document, windows form Controller Context van MVC: 10 jaar geleden in java/oop voor desktop apps

Strongly typed views Controller View public ActionResult AlbumsByGenre(int id) { List<Album> albums = db.GetAlbumsByGenreId(id); return View(albums); } @model IEnumerable<MvcMusicStore.Models.Album> <ul> @foreach (Album p in Model) { <li>@p.Title</li> </ul> Controller View Model bevat gegevens, logica, regels, het domein View bepaalt de weergave. Bijv. genereren van een webpagina, document, windows form Controller Context van MVC: 10 jaar geleden in java/oop voor desktop apps

Snel een view toevoegen Je kunt vanuit de controller code snel een view toevoegen: Model bevat gegevens, logica, regels, het domein View bepaalt de weergave. Bijv. genereren van een webpagina, document, windows form Controller Context van MVC: 10 jaar geleden in java/oop voor desktop apps

Razor is makkelijk Razor is op de een of andere manier heel intuïtief voor wie C# en HTML een beetje kent. Het is slim genoeg om goed te bepalen wat C# code is, en wat HTML is:

Explicit expressions Als je zeker wilt weten dat alles na de @ als C# wordt uitgevoerd, een explicit expression, gebruik je haakjes ( ) Hier is het nodig om expliciet aan te geven wat door Razor moet worden verwerkt en wat niet. Omdat Razor anders gaat zoeken naar de property p.Category.CategoryName.jpg die helemaal niet bestaat.

Razor Syntax Specifieke details over de razor syntax kan je nalezen in het boek. @ < code expression @( ) < explicit code expression @{ } < code block @: < plain text <text> </text> < plain text (hetzelfde als @:) @* *@ < comment

Zelf views schrijven We gaan natuurlijk niet al onze views scaffolden. Soms wil je iets wat niet eens lijkt op de standaard views. Hiervoor is het belangrijk dat je de HTML helper methods kent, maar die komen pas in hoofdstuk 5 aan bod. <div class="form-group"> @Html.LabelFor(model => model.Price, new { @class = "control- label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Price) @Html.ValidationMessageFor(model => model.Price) </div> </div>

School/huiswerk Voor de volgende les: Heb je hoofdstuk 3 afgerond Vragen?