What you will learn in this course
- Gain understanding of the strengths and weaknesses of ASP.NET MVC in a modern architecture.
- Learn to leverage the power of jQuery and its many plugins on the client. Use RESTful services to transport data between the client and server.
- Benefit from new HTML5 features.
- Use CSS/LESS/SASS to style your web applications
Course outline and topics
ASP.NET MVC Introduction
This module provides an introduction to the ASP.NET MVC framework. We will provide an overview of the MVC architecture including how a controller processes requests, communicates with the model layer and chooses a view to generate a response. Part of this overview will include looking at URL routing, model binding and the Razor view engine.
ASP.NET MVC Views
Razor is the default view engine in MVC. It is designed to provide a streamlined syntax for creating dynamic views. This module covers Razor's support for reusable templates with partial views and layout templates. We will also look at Html helpers that provide conveniences for rendering common markup such an input fields, hyperlinks, forms and URLs.
ASP.NET MVC Model Binding and Validation
Model binding is an important part of the MVC framework to ease input processing for controllers. We will see how data is mapped from the request to parameters of action methods and how complex objects can also be model bound. We will also examine how MVC provides a complete framework for server-side validation. We'll see how to use validation helpers, ModelState and data annotations to validate user input.
Even if "core" jQuery were all you could use, it would still be worth it. Fortunately, the jQuery community has written hundreds, if not thousands, of plugins (mostly free) that can take your applications to the next level with barely any code to write on your part. This module will cover some of the more popular plugins (color, validation, form, and more) and demonstrate how to write your own (this is often useful even if you don't plan on sharing your plugins with anybody else).
The jQuery UI project is a standard set of widgets and effects, put together by the jQuery team by selecting from and improving upon some of the most popular plugins developed by the community. These feature-rich widgets (autocomplete, datepicker, dialog, tabs, and more) can make your web pages seem as rich as traditional applications. You'll also learn how to use the jQuery UI CSS Framework.
jQuery and AJAX
Knockout brings data binding and MVVM to the client. It provides the necessary abstraction layer to build the user interface from a data source using a concise syntax. It automatically maps changes from the UI back into the data source and keeps the UI in sync when the data source changes. In addition, Knockout provides a simple and convenient templating library for nested UIs derived from a data source.
Cascading Style Sheets (CSS) is the presentation language of the web. In this module we examine the fundamentals of CSS to deliver modern user interfaces in the browser. In addition we cover LESS and SAAS which provide reuse and a dynamic aspect to an application's CSS.
With modern web development REST services have some big benefit over SOAP services. In this module we will take a look at these benefits as well as how to get started building REST services using the ASP.NET Web API framework. We will explore how REST services use standard HTTP constructs like resources URLs, methods and status codes.
RESTful services and the browser
Browsers aren't always as smart as they should be. Sometimes they claim they can accept any resource even though that isn't the case. And even though browsers are build around the HTML specifications it turns out they don't support all HTTP features, some of which are critical to REST services. Another issue is that browsers can be over aggressive with caching, and even worse, they use different defaults if you don't explicitly tell them what to do.
One of the most revolutionary features of HTML5 is the new WebSocket protocol which allows servers to push data to clients enabling almost "real time" notifications. This module looks at the client-side APIs you'll need to be familiar with in order to use them and some different ways of setting up a server in order to handle the client requests. We'll also look at web workers which allow you to perform long-running tasks while keeping the main UI for your application usable and responsive.
As strange as it sounds, HTML5 allows you to take your web applications offline. This module looks at the ways you can do this, specifying the resources the browser will need to download in order to be able to do anything offline and what events and methods you'll need to know about in order to provide a proper, offline experience.