MVC med Javascript och Ajax. Filip Ekberg

Relevanta dokument
MVC med Javascript och Ajax. Filip Ekberg

MVC med Javascript och Ajax. Filip Ekberg

MVC med Javascript och Ajax. Filip Ekberg

Asp.net mvc intro PER KVARNBRINK,

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

Kursplanering Utveckling av webbapplikationer

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.

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.

<script src= "

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

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

Android översikt. TDDD80 Mobila och sociala applikationer

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

Presentation Edument AB. All Rights Reserved.

Övning MS SQL och MVC del 2

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

INTRODUKTION TILL ANGULAR JS

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

Avancerade Webbteknologier

Klientprogrammering mot databaser

Internationalisering/lokalisering på webben

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

Övning: Arbeta med Azure Explorer

ASP.NET Thomas Mejtoft

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

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

Lab 6: ASP.NET 2.0 Providermodellen

Instruktion för användande av Citrix MetaFrame

E12 "Evil is going on"

Lösningar till tentamen i EDAF25

Exemple på Tentauppgifter Webbprogrammering

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

E09 - Totally Tool Time

Övning Dictionary. Övning 1. Steg 1: På din virtuella maskin, starta Visual Studio.

Design och konstruktion av grafiska gränssnitt

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

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Webbprogrammering. Sahand Sadjadee

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

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

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

En integration av betalningssystem på hemsida

Webbtjänster med API er

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

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

Slutrapport för JMDB.COM. Johan Wibjer

TDP003 Projekt: Egna datormiljön

JAVASCRIPT. Beteende

Webbprogrammering - 725G54 PHP. Foreläsning II

Sidan kommer inte läggas upp någonstans utan du redovisar den för mig på något handledningstillfälle.

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

DAT043 Objektorienterad Programmering

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

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

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

JAVAUTVECKLING LEKTION 4

Utveckling av webbapplikationer med.net, DVA213 (1 av 5)

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Language Integrated Query, LINQ, och databaser

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Föreläsning 4. CSS Stilmallar för webben

Joomla CMS Del 2 av 2

Viva la evolución. Peter Backlund

Tentamen ITK:P2. Inga hjälpmedel tillåtna förutom penna och papper. Skriv tydligt och texta gärna. 14 st frågor, 70 poäng.

PAINTFEUD. Erfarenheter

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Android översikt. TDDD80 Mobila och sociala applikationer

Webbservrar, severskript & webbproduktion

Webbutveckling med AngularJS

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Överföring av filer med Zendto v 1.1. stora filer som inte kan skickas via e-post konfidentiella uppgifter som inte kan skickas via okrypterad e-post

MVC med Javascript och Ajax. Filip Ekberg

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

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

Installationsanvisningar

On-line produktion TDDC61

On-line produktion TDDC61

ALM Live: Testfokus bättre mjukvarukvalitét med Visual Studio 2008 Team System

Webbprogrammering TDDD52

Webbsäkerhet för IT-tekniker VT2014 Johan Leitet Nätverkssäkerhet, 1DV425 johan.leitet.se twitter.com/leitet facebook.

F4. programmeringsteknik och Matlab

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Lösningar för tenta 2 DAT043,

Elektronisk publicering TNMK30

JavaScript del 3 If, Operatorer och Confirm

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Introduk+on +ll programmering i JavaScript

TDDE10 TDDE11, 725G90. Gemensam kurswebsida på:

Google Analy+cs. Umeå universitet

Windows Forms Winstrand Development

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Lathund - Redigera innehåll på Comfort Audios webbplats. 1. Logga in i WordPress Ändra/lägg till användare Lägga till nya sidor...

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Räkna med ASP.NET Web Forms

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Föreläsning 3. Stack

Transkript:

MVC med Javascript och Ajax Filip Ekberg

MVC med Javascript och Ajax Lektion 7 ASP.NET MVC

mail@filipekberg.se

Veckans mål ASP.NET MVC Repetition & Diskussion Vad är MVC? Vad är ASP.NET MVC? Hur skapar vi ett projekt med bra struktur? När lägger man till nya Controllers, Vyer och vilka Actions skall man ha? Vilka olika sätt kan vi använda AJAX på? Hur skiljer sig JavaScript från C# - Client vs Server Säkerhet Vad bör vi tänka på? Routing Mer avancerat Vad är ett Filter? Hur skapar vi egna? Vad är OWASP Vad är en webbserver? Hur hostar man ASP.NET MVC?

Vad ska vi kunna nu?

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

ASP.NET MVC

Vad är MVC?

Vad är ASP.NET MVC?

När lägger man till en ny Controller?

Vad är skillnaden på JavaScript och C#?

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

Vad är en ViewEngine? Och vad har ActionResult med det att göra?

När produceras min HTML?

AJAX

Säkerhet

Varför HTTPS?

Session Hijacking

Session Hijacking

public ActionResult MyInvoices() { var documents = new[] { "Filip_20130712.pdf", "Filip_20130713.pdf", "Filip_20130714.pdf" }; } return View(documents); <h2>myinvoices</h2> <ul> @foreach (var document in Model) { <li><a href="/home/downloaddocument?document=@document">download @document</a></li> } </ul>

public ActionResult DownloadDocument(string document) { var documentpath = Server.MapPath(Path.Combine("Invoices", document)); if (!System.IO.File.Exists(documentPath)) { return null; } } return File(documentPath, "application/pdf", document);

/Home/DownloadDocument?document=..\..\web.config

http://www.filipekberg.se/2013/07/12/are-you-serving-files-insecurely-in-asp-net

Routes

http://localhost:14845/date [Route("Date")] public ActionResult Date() { return Content(DateTime.Now.ToLongTimeString()); }

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

routes.maproute( name: "Example", url: "mvc/example/{controller}", defaults: new { controller = "Home", action = "Index" } );

routes.maproute( name: "GalleryRoute", url: "Gallery/{id}/{action}", defaults: new { controller = "Gallery", action = "Index" } ); public class GalleryController : Controller { public ActionResult Show(int id) { return Content($"Showing {id}"); } }

Filters

Cacha i 5 sekunder [OutputCache(Duration = 5)] public ActionResult Date() { return Content(DateTime.Now.ToLongTimeString()); }

IAuthorizationFilter

IActionFilter

IResultFilter

IExceptionFilter

IAuthorizationFilter IActionFilter IResultFilter IExceptionFilter

[CustomAuthorizationFilter] [CustomActionFilter] [CustomResultFilter] [CustomExceptionFilter] public class HomeController : Controller { public ActionResult Index() { return View(); } }

public class AdministratorAuthorizationAttribute : FilterAttribute, IAuthorizationFilter { public void OnAuthorization(AuthorizationContext filtercontext) { var user = filtercontext.httpcontext.user as ClaimsPrincipal; if (user == null) { filtercontext.result = new HttpUnauthorizedResult(); } return; if (!user.hasclaim("administrator", "true")) { filtercontext.result = new HttpUnauthorizedResult(); } } } return;

ASP.NET Identity

Ett Identitetssystem som gör det enkelt för oss att introducera ett säkerhetslaget för inloggning

Stöd för inloggning med mer än bara Användarnamn och Lösenord t.ex. Twitter, Facebook, Google, etc.

Install-Package Microsoft.Owin.Host.SystemWeb Install-Package Microsoft.AspNet.Identity.OWIN Install-Package Microsoft.AspNet.Identity.EntityFramework

public class MyIdentityDbContext : IdentityDbContext<IdentityUser> {} var context = new MyIdentityDbContext(); var store = new UserStore<IdentityUser>(context); usermanager = new UserManager<IdentityUser>(store); Hantera allt som har med användaren att göra

Integrationstester & Automatiska UI Tester

Hur funkar ett integrationstest?

Gör en riktig Request via en browser: Automatiskt!

Selenium http://www.seleniumhq.org/

Körs som vanliga Test i Visual Studio

Install-Package Selenium.WebDriver

Ladda ner Firefox

Ladda ner GeckoDriver https://github.com/mozilla/geckodriver/releases

var firefox = new FirefoxDriver();

[TestClass] public class GalleryControllerTests { [TestMethod] public void Index_ShouldReturn_IndexViewWithListOfImages() { } }

// ARRANGE var firefox = new FirefoxDriver(); firefox.navigate().gotourl("http://localhost:58948/"); RemoveOldPhotos(firefox); Vår ASP.NET MVC webbsida Detta kräver att vi startat projektet! Vid integrationstester vill vi se till att vi jobbar med ett cleant state

// ACT var fileuploadelement = firefox.findelementbyname("file"); fileuploadelement.sendkeys(@"c:\users\filip\desktop\sunset.jpg"); var name = Guid.NewGuid(); var nameelement = firefox.findelementbyid("name"); nameelement.sendkeys(name.tostring()); Peka på en fil som ska laddas upp var submitbutton = firefox.findelementbyid("submit"); submitbutton.click(); Thread.Sleep(2000); Vänta en stund, tills vi vet att vår AJAX-request fått ett svar och vår DOM har uppdaterats Skicka iväg vårt formulär var firsttitle = firefox.findelementbycssselector("div#result div.photo h3");

// ASSERT Assert.AreEqual(name.ToString(), firsttitle.text); firefox.quit();

private static void RemoveOldPhotos(FirefoxDriver firefox) { while (true) { try { Vår DOM uppdateras varje gång, så vi behöver leta efter nya referenser till alla länkar var link = firefox.findelementbycssselector("div#result div.photo div a"); if (link == null) break; } } link.click(); var alert = firefox.switchto().alert(); alert.accept(); } catch { break; } Hittar vi ingen länk att trycka på kastas ett exception, då kan vi helt enkelt gå tillbaka till testet Klicka på OK i Confirm-dialogen

Vår ASP.NET MVC Applikation testat som om en användare besöker den!

När är detta bättre än enhetstester?

mail@filipekberg.se