MVC med Javascript och Ajax. Filip Ekberg

Relevanta dokument
MVC med Javascript och Ajax. Filip Ekberg

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

MVC med Javascript och Ajax. Filip Ekberg

MVC med Javascript och Ajax. Filip Ekberg

Asp.net mvc intro PER KVARNBRINK,

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Kursplanering Utveckling av webbapplikationer

Räkna med ASP.NET MVC 3

Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen.

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Webbtjänster med API er

ASP.NET Thomas Mejtoft

Language Integrated Query, LINQ, och databaser

JavaScript in SharePoint and not just for Apps. Wictor Wilén

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Lab 6: ASP.NET 2.0 Providermodellen

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

// GET: Test1/Index2 // Syftet är att se hur olika url:er leder till olika actions

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

MVC med Javascript och Ajax. Filip Ekberg

Presentation Edument AB. All Rights Reserved.

<script src= "

WEBBSERVERPROGRAMMERING

Webbprogrammering. Sahand Sadjadee

Design och konstruktion av grafiska gränssnitt

Webbserverprogrammering

E12 "Evil is going on"

Webbtjänster med API er

Webbprogrammering - 725G54 PHP. Foreläsning II

Avancerade Webbteknologier

SAS USER FORUM SWEDEN 2017 USER FORUM. SAS Viya och öppenhet en gemomgång av LUA-, Java-, Python- och REST-gränssnitten mot SAS Viya

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

Mål med lektionen! Repetera och befästa kunskaperna.

Android översikt. TDDD80 Mobila och sociala applikationer

Next -> Next -> Finish

Övning MS SQL och MVC del 2

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Alla rättigheter till materialet reserverade Easec

Sammanfattning. Applikationen är utvecklad i Microsofts utvecklingsmiljö Visual Studio 2012.

Viktigt! Glöm inte att skriva TentamensKod (ditt anonyma student-id) på alla blad du lämnar in.

Innehåll. Dokumentet gäller från och med version

Pyramid Business Intelligence. Affärsinformation från din Pyramid till din iphone eller ipod (100913)

Internationalisering/lokalisering på webben

Webbservrar, severskript & webbproduktion

Förutsättningar: Konto på Azure, kontot har fått File Storage tillagt, Azure Powershell version eller senare.

Allmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

UTVECKLINGSMILJÖER Microsoft Visual Studio ( ), SQL Server Management Studio , Eclipse

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

Services + REST och OAuth

Lab 5: ASP.NET 2.0 Site Navigation

Lab 5: ASP.NET 4.5 Site Navigation

Arkitektur. Den Röda Tråden

MVC med Javascript och Ajax. Filip Ekberg

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

Övning: Arbeta med Azure Explorer

Design och konstruktion av grafiska gränssnitt

Räkna med ASP.NET Web Forms

Kursplan Webbutveckling 2, 100p Läsår

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

DAT043 - Föreläsning 7

INTRODUKTION TILL ANGULAR JS

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

Design. Vad lärde jag mig förra lekfonen? Hur bidrog jag Fll lärandet? Kravhantering sammanfa0ning 13/04/14

Objektorienterad Systemutveckling Period 3

Alla rättigheter till materialet reserverade Easec

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Labb 3: ASP.NET 4.5 Anpassningar av användargränssnittet: Master Pages, Teman, och Kontroller

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Server-kod. TDDD80 Mobila och sociala applikationer

Arv Murach s: kap 14

KURSKATALOG. qlikview.com

Avancerade Webbteknologier 2. AD11g Göteborg 2012 Mobilanpassning

Alla rättigheter till materialet reserverade Easec

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Kursplanering Objektorienterad programmering

Namn: (Ifylles av student) Personnummer: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Konsultprofil. Per Norgren (1983) Arkitekt & webbutvecklare

Laboration 2: Designmönster

TDP003 Projekt: Egna datormiljön

Observer Pattern och MVC. Objekt-orienterad programmering och design Alex Gerdes, 2016

Elektronisk publicering TNMK30

Webbtjänster med API er

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Javautvecklare. Utbildningsfakta. 400 YH-poäng, 2 år

Laboration 2: Designmönster

E13 "Behind the Wild"

On-line produktion TDDC61

On-line produktion TDDC61

Installationsanvisningar

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Introduktion till Entity Framework och LINQ. Källa och läs mer

Exemple på Tentauppgifter Webbprogrammering

Arv. Objektorienterad och komponentbaserad programmering

Android fortsättning. TDDD80 Mobila och sociala applikationer

Lektion 2, Grundläggande funktioner i ASP.NET

Content Management System. Publiceringssystem

En integration av betalningssystem på hemsida

Transkript:

MVC med Javascript och Ajax Filip Ekberg

Filip Ekberg Microsoft & Xamarin MVP mail@filipekberg.se

Vad ska vi lära oss? I denna kurs lär sig den studerande hur man jobbar med den naturliga uppdelningen av data, GUI och logik i sina projekt. Detta görs med MVC som är ett ramverk. MVC har mer eller mindre blivit en standard för avancerade.net-webbsidor. Arbetssättet gör att koden blir mer återanvändbar och kostnadseffektiv. Man delar upp projektet i de logiska lagren i Modell, View och Controller. Varje logiskt lager kan ersättas av en ny modul för att skapa en helt ny applikation.

Vad ska vi lära oss? Skapa projekt i ramverket ASP.NET MVC Projektstruktur i Visual Studio Model-View-Controller: Lagerstruktur och concept Designmönster & Arkitektur Integrering av databas och Entity Framework Lägga till och modifiera: Layout, Controllers, Razor Views JavaScript, Ajax Säkerhet & Infrastruktur

Mål Målet med kursen är att studerande ska kunna skapa återanvändbar kod enligt MVC-ramverket. På detta sätt kan studerande skapa webbprojekt som kan växa och expandera på ett kontrollerat sätt.

Mål Efter genomgången kurs ska den studerande ha kunskaper och färdigheter inom Ramverket ASP.NET MVC med dess komponenter och tekniker. JavaScript och Ajax för dynamiska responsiva hemsidor Integrering av MVC ramverket och Entity Framework ramverket.

För att få betyget godkänt Har erhållit lägst betyget godkänt på tentamen Har klarat av alla obligatoriska moment Kan förklara MVC-modellens lagerstruktur Ska kunna skapa MVC-applikationer enligt god programmeringssed Kan lägga till och modifiera: Layout, Controllers, Razor Views Kan skapa responsiva hemsidor i MVC Förstår hur JavaScript och ASP.NET MVC arbetar tillsammans Förstår kopplingen mellan DOM (Document Object Model) och Ajax Kan skriva enklare JavaScript som används i MVC-projekt

För att få betyget väl godkänt Uppnått kunskapskraven för betyget godkänt Har erhållit lägst betyget väl godkänt på tentamen Kan använda MVC-projekt obehindrat Kan göra korrekta ändringar i modellen obehindrat Kan använda DOM-modellen med Ajax-kod Har fördjupad förståelse för JavaScript

Exemination Redovisning av obligatoriska moment (muntligt/skriftligt) Individuell skriftlig tentamen

Upplägg 8.30-10.00 (1.5h Föreläsning) 10.20-12.00 (1.5h Föreläsning) 13.00-16.30 (Labb och Självstudie)

Upplägg Vecka 1 Lektion 1 - Introduktion Lektion 2 - Introduktion Fortsätter Vecka 3 Lektion 5 - Datalagring Lektion 6 - Testning Lektion 7 - Säkerhet & Avancerad MVC Vecka 2 Lektion 3 - Javascript & Ajax Lektion 4 - Javascript & Ajax Fortsätter Vecka 4 Lektion 8 - Säkerhet fortsätter Lektion 9 Repetition, förberedelser för tentamen

MVC med Javascript och Ajax Lektion 1 - Introduktion

Dagens mål Vad är MVC? Hur skiljer det sig från vad vi gjort tidigare? Djupdykning i MVC som ett mönster Hur skapar vi ett nytt projekt som bygger på MVC - Tomt vs. "Template" - Vilka referenser behövs Vad innerhåller projektet? Hur fungerar request-pipelinene? "Startup" och Middlewares

Förkunskapskrav

IIS Vad gör en webbserver? Varför IIS? Vad är ASP.NET?

C# och Webben ASP.NET ASP.NET MVC Varför C#? Dela kod mellan desktop och webb

127.0.0.1

fekberg.com

XML, JSON, HTML Content Types

Stateless vs Stateful

REST Representational state transfer

HTTP Verbs GET, POST, PUT, DELETE,

MVC

a software design pattern is a general reusable solution to a commonly occurring problem within a given context in software design

Varför MVC? Uppdelning av lager Testbarhet Anpassat för webb (stateless)

https://en.wikipedia.org/wiki/model%e2%80%93view%e2%80%93controller

Presentations-lager Business-lager Data-lager

MVC Business-lager Data-lager

Model

C# Klass Ett kontrakt utan logik

public class Product { public Guid Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } public decimal Tax { get; set; } }

View

Razor View Engine Hur ska modellen representeras?

@model Product <h1>@model.name</h1> <div> <h2>price</h2> <span>@model.price</span> <h2>vat</h2> <span>@model.tax</span> <a href="/cart/add/@model.id">purchase</a> </div>

Controller & Action

Vem tar hand om vad?

public class HomeController : Controller { }

public ActionResult Product(Guid id) { var model = new Product { Id = Guid.NewGuid(), Name = "C# Smorgasbord", Price = 125.00m, Tax = 25.0m }; } return View(model);

Microservices Små & Enkla Controllers/Actions

Hur funkar det?

/Home/About /{Controller}/{Action} public class HomeController : Controller { public ActionResult About() { return Content("Alright!"); } }

/Gallery/1/Sunrise-at-the-Beach /{Controller}/{Id}/{Meta} Sunrise-at-the-Beach public class GalleryController : Controller { public ActionResult Show(int id, string meta) { return Content("OK!"); } } 1

https://www.asp.net/media/4773381/lifecycle-of-an-aspnet-mvc-5-application.pdf

public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.ignoreroute("{resource}.axd/{*pathinfo}"); routes.maproute( name: "GalleryRoute", url: "Gallery/{id}/{meta}", defaults: new { controller = "Gallery", action = "Show", id = UrlParameter.Optional, meta = UrlParameter.Optional } ); } } routes.maproute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );

public string Data { get; set; } public ActionResult Show(int id, string meta) { if(string.isnullorwhitespace(data)) Data = meta; } return Content(Data); /Gallery/1/Sunrise-at-the-Beach Sunrise-at-the-Beach /Gallery/2/? Inget!

Varför sparas inte värdet i min Property?

Stateless!

public static string Data { get; set; } public ActionResult Show(int id, string meta) { if(string.isnullorwhitespace(data)) Data = meta; } return Content(Data); /Gallery/1/Sunrise-at-the-Beach Sunrise-at-the-Beach /Gallery/2/ Sunrise-at-the-Beach

Global.asax

public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() {} protected void Application_End() {} protected void Session_Start() {} protected void Session_End() {} } protected void Application_Error() {}

public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { RouteConfig.RegisterRoutes(RouteTable.Routes); } }

Web.config

Web.config Inställningar - App Settings Databasinformation - Connection Strings Vilken.NET version? HTTP Handlers URL Rewrite <appsettings> <add key="webpages:version" value="3.0.0.0"/> <add key="webpages:enabled" value="false"/> <add key="clientvalidationenabled" value="true"/> <add key="unobtrusivejavascriptenabled" value="true"/> <add key="mysetting" value="somevalue" /> </appsettings> <system.web> <compilation debug="true" targetframework="4.5.2"/> <httpruntime targetframework="4.5.2"/> </system.web> Ändrar du i Web.config startar web-servern om

Mer Web.config Web.config för Views-katalogstrukturen Inkludera default namespace i dina vyer <namespaces> <add namespace="system.web.mvc" /> <add namespace="system.web.mvc.ajax" /> <add namespace="system.web.mvc.html" /> <add namespace="system.web.routing" /> <add namespace="mymvcapplication" /> </namespaces>

System.Web vs OWIN

System.Web Tar hand om all hantering av request/respons Hostas via IIS eller IIS Express

OWIN Specifikation för hur webbservrar och applikationer kan skrivas löst kopplade Tillåter oss att enklare introducera Middlewares

[assembly: OwinStartup(typeof(MyMvcApp.App_Start.Startup))] namespace MyMvcApp.App_Start { public class Startup { public void Configuration(IAppBuilder app) { AreaRegistration.RegisterAllAreas(); RouteConfig.RegisterRoutes(RouteTable.Routes); } } } app.usecookieauthentication(new CookieAuthenticationOptions { AuthenticationType = "Cookie", AuthenticationMode = AuthenticationMode.Active, LoginPath = new PathString("/login"), LogoutPath = new PathString("/logout"), });

Install-Package Microsoft.Owin.Host.SystemWeb

Lär känna ASP.NET MVC

Lär känna ASP.NET MVC Sätt breakpoints överallt Ta bort, Lägg Till och Ändra för att se hur det påverkar IIS Express kan ibland behövas tvingas stängas av

Labb

Bildgalleri

Bildgalleri? Ladda upp bilder Skapa album av uppladdade bilder Kommentera på bilder Inloggning & Säkerhet Administrationsgränssnitt