CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122...

33
www.twitter.com/Telerik www.facebook.com/Telerik Philip Japikse (@skimedic) [email protected] www.skimedic.com/blog MVP, MCSD.Net, MCDBA, CSM, CSP Agile Practices Evangelist, Telerik CONTROLLING ASP.NET MVC 4

Transcript of CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122...

Page 1: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

www.twitter.com/Telerik

www.facebook.com/Telerik

Philip Japikse (@skimedic)

[email protected]

www.skimedic.com/blog

MVP, MCSD.Net, MCDBA, CSM, CSP

Agile Practices Evangelist, Telerik

CONTROLLING ASP.NET MVC 4

Page 2: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

WHO AM I?

8/30/2012 2

• Agile Practices Evangelist, Telerik, Inc.

• Microsoft MVP, MCSD, MCDBA, CSM, CSP

• Lead Director, Cincinnati .NET User’s Group

• Founder, Agile Conferences, Inc.

• Host, Zero To Agile Podcast

• www.telerik.com/zerotoagile

Page 3: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

CONFIGURATION CHANGES

4/19/2008 3

Page 4: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

APP_START

4/19/2008 4

• New folder holds:

• AuthConfig

• BundleConfig

• FilterConfig

• RouteConfig

• WebApiConfig

Page 5: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

GLOBAL.ASAX CHANGES

4/19/2008 5

protected void Application_Start() { //area registration, etc WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); AuthConfig.RegisterAuth(); }

Page 6: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

DEMO –

CONFIGURATION CHANGES

4/19/2008 6

Page 7: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

UPDATED TEMPLATES

Page 8: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

• Intranet –

• Starter website that uses forms authentication

• Internet –

• Starter website that uses Windows authentication

• Richer UI

• Includes KnockoutJS, JQueryUI

• Mobile –

• Optimized for Mobile Devices

• Includes JQueryMobile

• WebAPI –

• HTTP Service Application

ASP.NET MVC STARTER PROJECTS

8

Page 9: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

STARTER SITES

9

Page 10: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

RICHER UI

10

Page 11: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

MVC TEMPLATES IN RTM…

• MVC templates are changed!

• No longer have responsive UI

Page 12: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

• @media only screen and (max-width: 850px) { .. }

• NOTE: @media is a CSS3 element rendered by the browser, not a MVC4 specific item

ADAPTIVE RENDERING – MEDIA

QUERIES

12

Page 13: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

DEMO –

IMPROVED TEMPLATES

Page 14: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

MOBILE

Page 15: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

HTML5 - IN THE BOX <ul data-role="listview" data-inset="true"> <li data-role="list-divider">Navigation</li> <li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("Contact", "Contact", "Home")</li> </ul>

Page 16: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

VIEWPORT META TAG

<meta name="viewport" content="width=device-width" />

Page 17: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

ADD JQUERY MVC TO INTERNET APPS

• (NuGet) Install-Package jQuery.Mobile.MVC

• Adds:

• _Layout.Mobile.cshtml

• _ViewSwitcher.cshtml

• ViewSwitcherController.cs

Page 18: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

VIEW SWITCHING

Page 19: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

CREATING DISPLAY MODES

DisplayModeProvider.Instance

.Modes.Insert(0,

new DefaultDisplayMode("iPhone") { ContextCondition =

(context =>

context.GetOverriddenUserAgent() .IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0) });

Page 20: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

DEMO – DISPLAY MODES, VIEW SWITCHING,

BROWSER OVERRIDING

Page 21: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

ASYNC

Page 22: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

TASK SUPPORT - ASYNC CONTROLLERS

• Async action methods

• Written as single methods

• Return Task or Task<ActionResult>

• Support for Timeouts

• Add CancellationToken parameter

Page 23: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

ASYNC CONTROLLERS public class HomeController : AsyncController { public async Task<ActionResult> Index() { var client = new HttpClient(); var response = await client.GetAsync(

Url.Action("gallery", "photo", null, Request.Url.Scheme)); var jss = new JavaScriptSerializer(); var result = jss.Deserialize<List<Photo>>(

await response.Content.ReadAsStringAsync()); return View(result); }

}

Page 24: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

HANDLING TIMEOUTS

[AsyncTimeout(5000)] [HandleError(ExceptionType =

typeof(TaskCanceledException),

View = "TimedOut")]

Page 25: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

DEMO –

ASYNC

Page 26: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

WEBAPI

Page 27: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

ASP.NET WEB API • Modern HTTP Programming Model

• Routing

• Content Negotiation

• Model Binding and Validation

• Filters

• Query Composition

• Improved Testability

• Improved Inversion of Control

• Code-Based configuration

• Self-Hostable

Page 28: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

DEMO –

WEBAPI

Page 29: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

ADD WEBAPI CONTROLLER

• Derives from API Controller

Page 30: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

WHAT’S NOT IN MVC4 (YET)

• ASP.NET Single Page Application (postponed)

• SignalR (postponed)

• Run Recipe – Removed from VS

Page 31: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

UPGRADING MVC3 PROJECTS

4/19/2008 31

• Create new MVC4 Project

• Copy Views, Controllers, Code, Content

• Update all web config files

• System.Web.MVC -> Version 4

• System.Web.WebPages -> Version 2

• System.Web.Helpers -> Version 2

• System.Web.WebPages.Razor -> Version 2

• Follow:

• http://www.asp.net/whitepapers/mvc4-release-notes

Page 32: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

BREAKING CHANGES

4/19/2008 32

• Removed from Razor

• ModelSpan, Mvc<Language>RazorCodeGenerator,

MvcVBRazorCodeParser

• WebMatrix takes over URL for Forms Auth

• Breaks MVC RTM applications

• Requires MVC3 Tools Update or

• Manual updates from

http://www.asp.net/whitepapers/mvc4-release-notes

Page 33: CONTROLLING ASP.NET MVC 4 - skimedic.com · CONTROLLING ASP.NET MVC 4 . WHO AM I? 8/30/20122 •Agile Practices Evangelist, Telerik, Inc. ... •SignalR (postponed) •Run Recipe

CONTACT ME

8/30/2012 33

[email protected]

• www.skimedic.com/blog

• www.twitter.com/skimedic

• www.telerik.com/zerotoagile