controlling asp.net mvc 4
TRANSCRIPT
![Page 1: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/1.jpg)
www.twitter.com/Telerik
www.facebook.com/Telerik
Philip Japikse (@skimedic)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/3.jpg)
CONFIGURATION CHANGES
4/19/2008 3
![Page 4: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/4.jpg)
APP_START
4/19/2008 4
• New folder holds:
• AuthConfig
• BundleConfig
• FilterConfig
• RouteConfig
• WebApiConfig
![Page 5: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/5.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/6.jpg)
DEMO –
CONFIGURATION CHANGES
4/19/2008 6
![Page 7: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/7.jpg)
UPDATED TEMPLATES
![Page 8: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/8.jpg)
• 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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/9.jpg)
STARTER SITES
9
![Page 10: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/10.jpg)
RICHER UI
10
![Page 11: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/11.jpg)
MVC TEMPLATES IN RTM…
• MVC templates are changed!
• No longer have responsive UI
![Page 12: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/12.jpg)
• @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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/13.jpg)
DEMO –
IMPROVED TEMPLATES
![Page 14: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/14.jpg)
MOBILE
![Page 15: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/16.jpg)
VIEWPORT META TAG
<meta name="viewport" content="width=device-width" />
![Page 17: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/18.jpg)
VIEW SWITCHING
![Page 19: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/20.jpg)
DEMO – DISPLAY MODES, VIEW SWITCHING,
BROWSER OVERRIDING
![Page 21: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/21.jpg)
ASYNC
![Page 22: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/22.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/24.jpg)
HANDLING TIMEOUTS
[AsyncTimeout(5000)] [HandleError(ExceptionType =
typeof(TaskCanceledException),
View = "TimedOut")]
![Page 25: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/25.jpg)
DEMO –
ASYNC
![Page 26: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/26.jpg)
WEBAPI
![Page 27: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/27.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/28.jpg)
DEMO –
WEBAPI
![Page 29: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/29.jpg)
ADD WEBAPI CONTROLLER
• Derives from API Controller
![Page 30: CONTROLLING ASP.NET MVC 4](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/30.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/31.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/32.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022012011/613d4ff6736caf36b75bd63d/html5/thumbnails/33.jpg)
CONTACT ME
8/30/2012 33
• www.skimedic.com/blog
• www.twitter.com/skimedic
• www.telerik.com/zerotoagile