330 likes | 486 Views
What’s new in ASP.NET MVC 3. Building a NerdDinner / AppStore Application. Introducing NerdDinner.com. Introducing NerdDinner.com. nerddinner.codeplex.com Free PDF walkthrough (updated to 2.0) tinyurl.com/ aspnetmvc. Introducing NerdDinner.com. Introducing NerdDinner.com.
E N D
What’s new inASP.NET MVC 3 Building a NerdDinner/AppStore Application
Introducing NerdDinner.com • nerddinner.codeplex.com • Free PDF walkthrough (updated to 2.0) • tinyurl.com/aspnetmvc
What’s new in ASP.NET MVC 3 Razor View Engine Multiple View Engine Support Validation Improvements Dynamic ViewBag Global Filters New ActionResults Project Dialog Improvements VBHTML Support Task-based Helpers Improved Dependency Injection Porting MVC Script Libraries to jQuery Granular ValidateInput Add View Dialog Improvements Project Dialog Extensibility Improvements Improved Caching Support JSON Binding Support
What’s new in ASP.NET MVC 3 Razor View Engine Multiple View Engine Support Validation Improvements Dynamic ViewBag Global Filters New ActionResults Project Dialog Improvements VBHTML Support Task-based Helpers Improved Dependency Injection Porting MVC Script Libraries to jQuery Granular ValidateInput Add View Dialog Improvements Project Dialog Extensibility Improvements Improved Caching Support JSON Binding Support
Upgrading ASP.NET MVC 3 Application Upgrader tinyurl.com/upgrademvc3
Multiple View Engine Support protected void Application_Start() { ViewEngines.Engines.Add(newSparkViewFactory()); … }
Razor • Clean & Concise • Based on Existing Languages • Intellisense • Code Colorization • Unit Testing Support
Syntax Comparison <ul> <% for (int i = 0; i < 10; i++) {%> <li><%=i %></li> <%} %> </ul> Web Forms 6 transitions Razor 2 transitions <ul> @for (int i = 0; i < 10; i++) { <li>@i</li> } </ul>
Layouts Layout View <html> <head> <title>Title<title> </head> <body> @RenderSection("Menu") @RenderBody() </body> </html> @{ Layout="~/Views/Shared/_Layout.cshtml"; } @section Menu { <ul id="pageMenu"> <li>Item 1</li> <li>Item 2</li> </ul> }
Web Forms to Razor Open Source Razor Converter github.com/telerik/razor-converter
DEMO Views using Razor
Filters • Declarative • Cross-cutting concerns • Custom filters • Supported since version 1
Types of Filters • IActionFilter • IResultFilter • IExceptionFilter • IAuthorizationFilter
Filters Example [HandleError] public class BlogController : Controller { [HandleLogging] public ActionResult Index() { return View(); } }
Global Filters • No longer need attributes • Applies to all actions on all controllers
Global Filters protected void Application_Start() { GlobalFilters.Filters.Add(new MyActionFilterAttribute()); … }
DEMO Logging Errors with Global Filters
Dynamic ViewBag • Accessible via properties • Properties map to ViewData entries • Late-bound
Dynamic ViewBag <head> <title>@ViewBag.Title<title> </head>
DEMO Converting to Dynamic ViewBag
New Action Results • HttpNotFoundResult • RedirectResult • HttpStatusCodeResult
DEMO Using New Action Results
JavaScript and AJAX • JSON Binding • jQuery Validation • Unobstrusive JavaScript • Separation of Presentation and Content • No errors if AJAX isn’t supported • RemoteAttribute
Unobtrusive JavaScript web.config <configuration> <appSettings> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings> </configuration> code HtmlHelper.UnobtrusiveJavaScriptEnabled = true;
Unobtrusive JavaScript web.config <configuration> <appSettings> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings> </configuration> code HtmlHelper.UnobtrusiveJavaScriptEnabled = true;
Client Validation web.config <configuration> <appSettings> <add key=“ClientValidationEnabled" value="true"/> </appSettings> </configuration> code HtmlHelper.ClientValidationEnabled = true;
DEMO Remote Validation
Resources Software Application Developers Infrastructure Professionals http://technet.microsoft.com/ http://msdn.microsoft.com/ technetindia msdnindia @technetindia @msdnindia
© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.