About this course
In this course, students will learn to develop advanced ASP.NET MVC applications using .NET Framework tools and technologies. The focus will be on coding activities that enhance the performance and scalability of a web application. ASP.NET MVC will be introduced and compared with Web Forms so that students know when each should/could be used. This course will also prepare the students for exam 70-486.
Audience profile
This course is intended for professional web developers who use Microsoft Visual Studio in an individual-based or team-based, small-sized to large development environment. Candidates for this course are interested in developing advanced web applications and want to manage the rendered HTML comprehensively. They want to create websites that separate the user interface, data access, and application logic.
Prerequisites
Before attending this course, students must have:
A minimum of two to three years of experience developing web-based applications by using Microsoft Visual Studio and Microsoft ASP.NET, proficiency in using the .NET Framework, and some familiarity with the C# language.
Module 1: Exploring ASP.NET MVC 5The goal of this module is to outline to the students the components of the Microsoft Web Technologies stack, which can be used to host a completed web application. Students will also learn about ASP.NET and be introduced to the web forms, web pages, and MVC programming models. Finally they will see an overview of ASP.NET MVC 5, including new features and configuration.Lessons
- Overview of Microsoft Web Technologies
- Overview of ASP.NET
- Introduction to ASP.NET MVC 5
Lab : Exploring ASP.NET MVC 5
- Exploring a Photo Sharing Application
- Exploring a Web Pages Application
- Exploring a Web Forms Application
- Exploring an MVC Application
After completing this module, students will be able to:
Describe the Microsoft Web Technologies stack and select an appropriate technology to use to develop any given application.
Module 2: Designing ASP.NET MVC 5 Web ApplicationsThe goal of this module is to introduce students to the typical design process that architects must complete when they plan an MVC 5 application. At this stage in the design process, MVC 5 has been selected as the most appropriate programming model, but the details of the application, such as the overall architecture, Controllers, Views, Models, and routes to create, have not been fixed. How to plan such details is shown during this module.Lessons
- Planning in the Project Design Phase
- Designing Models, Controllers, and Views
Lab : Designing ASP.NET MVC 5 Web Applications
- Planning Model Classes
- Planning Controllers
- Planning Views
- Architecting an MVC Web Application
After completing this module, students will be able to:
Design the architecture and implementation of a web application that will meet a set of functional requirements, user interface requirements, and address business models.
Module 3: Developing ASP.NET MVC 5 ModelsThe goal of this module is to enable the students to create Models within an MVC application that implement the business logic necessary to satisfy business requirements. The module also describes how to implement a connection to a database, or alternative data store, using the Entity Framework and LINQ.Lessons
- Creating MVC Models
- Working with Data
Lab : Developing ASP.NET MVC 5 Models
- Creating an MVC Project and Adding a Model
- Adding Properties to MVC Models
- Using Data Annotations in MVC Models
- Creating a New Microsoft Azure SQL Database
After completing this module, students will be able to:
Create MVC Models and write code that implements business logic within Model methods, properties, and events.
Module 4: Developing ASP.NET MVC 5 ControllersThe goal of this module is to enable students to add Controllers to MVC applications and to implement actions that respond to user input and other events. The students will learn how Controllers relate to Models and how to implement Controller actions that define the View used to display or edit data. This module also covers how to write action filters that run code before or after multiple actions in the Controller. The students will learn about situations when action filters are useful.Lessons
- Writing Controllers and Actions
- Writing Action Filters
Lab : Developing ASP.NET MVC 5 Controllers
- Adding an MVC Controller and Writing the Actions
- Optional—Writing the Action Filters in a Controller
After completing this module, students will be able to:
Add Controllers to an MVC Application to manage user interaction, update models, and select and return Views.
Module 5: Developing ASP.NET MVC 4 ViewsThe goal of this module is to describe the role of Views in an MVC web application and enable users to create and code them. The syntax of a Razor View is of critical importance for students to understand because it defines both the layout and the functionality of the data display. HTML Helpers will also be discussed in detail and common Helpers, such as Html.ActionLink() and Html.EditorFor(), will be described. Reusing code by defining Partial Views and Razor Helpers will be discussed as well.Lessons
- Creating Views with Razor Syntax
- Using HTML Helpers
- Re-using Code in Views
Lab : Developing ASP.NET MVC 5 Views
- Adding a View for Photo Display
- Adding a View for New Photos
- Creating and Using a Partial View
- Adding a Home View and Testing the Views
After completing this module, students will be able to:
Create Views in an MVC application that display and edit data and interact with Models and Controllers
Module 6: Testing and Debugging ASP.NET MVC 5 Web ApplicationsThe goal of this module is to enable students to increase the resilience and quality of an application by locating and correcting code errors, bugs, and other unexpected results. MVC applications are well suited to unit testing techniques and these techniques ensure a high quality of code by systematically testing the functionality of each small component. In addition the debugging tools and exception handling available in Visual Studio will be explained.Lessons
- Unit Testing MVC Components
- Implementing an Exception Handling Strategy
Lab : Testing and Debugging ASP.NET MVC 5 Web Applications
- Performing Unit Tests
- Optional – Configuring Exception Handling
After completing this module, students will be able to:
Run unit tests and debugging tools against a web application in Visual Studio and configure an application for troubleshooting.
Module 7: Structuring ASP.NET MVC 5 Web ApplicationsThe goal of this module is to enable students to structure a web application in such a way that users can rapidly locate the information they need. Two aspects of the design are emphasized: the URLs presented in the browser address bar should be understandable and can be controlled by adding routes to the ASP.NET Routing Engine, and the navigation controls, such as menus and breadcrumb trails, should present the most relevant links to frequently read pages. Search Engine Optimization is important throughout this module.Lessons
- Analyzing Information Architecture
- Configuring Routes
- Creating a Navigation Structure
Lab : Structuring ASP.NET MVC 5 Web Applications
- Using the Routing Engine
- Optional—Building Navigation Controls
After completing this module, students will be able to:
Develop a web application that uses the ASP.NET routing engine to present friendly URLs and a logical navigation hierarchy to users.
Module 8: Applying Styles to ASP.NET MVC 5 Web ApplicationsThe goal of this module is to explore how students can impose a consistent look and feel to an MVC application and share other common components, such as headers and footers, between all Views. Besides describing CSS styles and template views, the module will discuss how to migrate a look and feel created by a web designer into an MVC application. Techniques for adapting the display of a site for small screens and mobile devices will also be introduced.Lessons
- Using Layouts
- Applying CSS Styles to an MVC Applicaiton
- Creating an Adaptive User Interface
Lab : Applying Styles to ASP.NET MVC 5 Web Applications
- Creating and Applying Layouts
- Applying Styles to an MVC Web Application
- Optional—Adapting Webpages for Mobile Browsers
After completing this module, students will be able to:
Implement a consistent look and feel, including corporate branding, across an entire MVC web application.
Module 9: Building Responsive Pages in ASP.NET MVC 5 Web ApplicationsThe goal of this module is to describe to the students how partial page updates and caching can optimize the responsiveness of a web application. Students will see how to make use of AJAX helpers and partial views to update small portions of a page instead of refreshing the entire page. The module also covers the different caches developers can use to store rendered pages and discusses how to configure caching for maximum performance.Lessons
- Using AJAX and Partial Page Updates
- Implementing a Caching Strategy
Lab : Building Responsive Pages in ASP.NET MVC 5 Web Applications
- Using Partial Page Updates
- Optional—Configuring the ASP.NET Caches
After completing this module, students will be able to:
Use partial page updates and caching to reduce the network bandwidth used by an application and accelerate responses to user requests.
Module 10: Using JavaScript and jQuery for Responsive MVC 5 Web ApplicationsThe goal of this module is to teach the students techniques that run code on the browser. This approach can increase the responsiveness of the application because a rendered page can respond to a user action without reloading the entire page from the server. Students will learn about the jQuery script library and how to use it to call web services and update user interface components.Lessons
- Rendering and Executing JavaScript Code
- Using jQuery and jQueryUI
Lab : Using JavaScript and jQuery for Responsive MVC 5 Web Applications
- Creating and Animating the Slideshow View
- Optional—Adding a jQueryUI ProgressBar Widget
After completing this module, students will be able to:
Write JavaScript code that runs on the client-side and utilizes the jQuery script library to optimize the responsiveness of an MVC web application.
Module 11: Controlling Access to ASP.NET MVC 5 Web ApplicationsThe goal of this module to ensure good security in terms of strong authentication and authorization for access. The lessons describe how to enable anonymous users to create their own user account and gain privileged access to content.Lessons
- Implementing Authentication and Authorization
- Assigning Roles and Membership
Lab : Controlling Access to ASP.NET MVC 5 Web Applications
- Configuring Authentication and Membership Providers
- Building the Logon and Register Views
- Authorizing Access to Resources
- Optional—Building a Password Reset View
After completing this module, students will be able to:
Implement a complete membership system in an MVC 5 web application.
Module 12: Building a Resilient ASP.NET MVC 5 Web ApplicationThe goal of this module is to enable the students to build applications that are stable and reliable. Such applications are not vulnerable to common hacking techniques such as cross-site scripting and also store state information such as the contents of a shopping cart and user preferences. This state information is preserved when servers or browsers restart, connections are lost, and other connectivity issues occur.Lessons
- Developing Secure Sites
- State Management
Lab : Building a Resilient ASP.NET MVC 5 Web Application
- Creating Favorites Controller Actions
- Implementing Favorites in Views
After completing this module, students will be able to:
Build an MVC application that resists malicious attacks and persists information about users and preferences.
Module 13: Implementing Web APIs in ASP.NET MVC 5 Web ApplicationsThe goal of the module is to introduce the concept of a Web API to students and to describe how to make an application’s core functionality more broadly available for integration into other web and mobile applications. Students will learn about the new Web API feature of MVC 5 and see how to build a RESTful Web API and call it from other applications.Lessons
- Developing a Web API
- Calling a Web API from Mobile and Web Applications
Lab : Implementing Web APIs in ASP.NET MVC 5 Web Applications
- Adding a Web API to the Photo Sharing Application
- Using the Web API for a Bing Maps Display
After completing this module, students will be able to:
Describe what a Web API is and why developers might add a Web API to an application.
Module 14: Handling Requests in ASP.NET MVC 5 Web ApplicationsThe goal of this module is to describe how to write components that intercept requests from browsers before they are received by MVC Controllers. These components include HTTP Modules, HTTP Handlers, and the Web Sockets protocol. The module describes scenarios in which developers use such components and shows how to add them to an MVC application.Lessons
- Using HTTP Modules and HTTP Handlers
- Using Web Sockets
Lab : Handling Requests in ASP.NET MVC 5 Web Applications
- Creating a SignalR Hub
- Creating a Photo Chat View
After completing this module, students will be able to:
Modify the way browser requests are handled by an MVC application.
Module 15: Deploying ASP.NET MVC 5 Web ApplicationsThe goal for this module is to enable students to deploy a completed MVC application to a web server or Microsoft Azure. The module begins by describing testing, staging, and production deployments and the web server environments required for each. It also describes the advantages and disadvantages of using Microsoft Azure to host the application. Students also see all the available deployment options in Visual Studio.Lessons
- Deploying a Web Application
- Deploying an ASP.NET MVC 5 Web Application
Lab : Deploying ASP.NET MVC 5 Web Applications
- Deploying a Web Application to Microsoft Azure
- Testing the Completed Application
After completing this module, students will be able to:
Describe how to package and deploy an ASP.NET MVC 5 web application from a development computer to a web server for staging or production.
ASP.NET
- What not to do in ASP.NET, and what to do instead
- ASP.NET MVC 5: Building Your First Web Application – Part 1 – CodeProject
- MVC Intro Video
- Developing ASP.NET Web Applications
Authorization
- Getting Started – OAuth
- Using OAuth Providers with MVC 4
- Implement Active Directory Authentication in ASP.NET MVC 5
- How To: Secure your ASP.NET MVC application and use Active Directory as the Membership Provider
- Code MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on (C#)
- Using OAuth 2.0 to Access Google APIs
- Google+ Signin for ASP.NET MVC 4
- Walkthrough: Configuring Google Sign-In for ASP.NET MVC 5 and Visual Studio 2013
- Using OAuth Providers with MVC 4
- Walkthrough: Configuring Facebook Sign-In for ASP.NET MVC 5 and Visual Studio 2013
- Login Page Redirect Diagram
- Introducing Single Sign-on to an existing ASP.NET MVC application
- Creating a custom Login page for federated authentication with Windows Azure ACS
- Claims-Aware Applications .NET 4.5
- OAuth2 Authorization Code Grant Diagram
- Role based Authorization
- Thoughts on ASP.NET MVC Authorization and Security
- SimpleMembership, Membership Providers, Universal Providers and the new ASP.NET 4.5 Web Forms and ASP.NET MVC 4 templates
- Introducing Single Sign-on to an existing ASP.NET MVC application
- Security, Authentication, and Authorization with ASP.NET MVC
- Example: Adding authorization to an ASP.NET MVC web application
- ASP.NET MVC: Using Identity for Authentication and Authorization
- Authenticating Users with Forms Authentication (C#)
- Create a secure ASP.NET MVC 5 web app with log in, email confirmation and password reset (C#)
- Forms Authentication in ASP.NET MVC 4
- MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on (C#)
- OWIN – Open Web Interface for .NET
- Role based Authorization
- AuthorizeAttribute.Roles Property (System.Web.Mvc)
- Introduction to ASP.NET Identity
- Implementing User Authentication in ASP.NET MVC 6
- What Is OAuth? How Those Facebook, Twitter, and Google Sign-in Buttons Work
Azure
- Intro to Windows Azure – Windows Azure fundamentals
- Microsoft Azure Pass
- Get started with Azure Cloud Services and ASP.NET | Microsoft Docs
- Windows Azure IaaS vs. PaaS vs. SaaS
- Explaining Database Transaction Units (DTUs) and elastic Database Transaction Units (eDTUs)
Blend
- Introducing Blend for Visual Studio 2012 – Build a simple Windows 8 Store App
- Blend for Visual Studio 2012 By Example
- Create your first Windows Store app with Blend, part 1: the master page (HTML & JavaScript)
C# Tutorials
- C# Quick Guide
- Multiple Models in a View in ASP.NET MVC 4 / MVC 5
- C# Quick Guide
- Fast C# Tutorial for Non .NET Programmers
- C vs C# Checklist form a C Programmers POV
- C# Tutorials
Connection Strings
- Encrypting connection strings in Windows Azure web applications
- Protecting Connection Strings and Configuration Files
- Protecting Connection Information
Controllers
- Difference Between ViewResult() and ActionResult() in MVC ?
- Difference Between ViewResult() and ActionResult()
- ViewResult vs ActionResult
Dependency Injection
Deployment
- Build and Deploy Databases to a Staging or Production Environment
- Planning the Development, Testing, Staging, and Production Environments
- How to Transform Web.config When Deploying a Web Application Project
- Web.config Transformation Syntax for Web Application Project Deployment
- Bundling and Minification
- Bundling in ASP.NET
- Web.config Transformation Tester
- Transcender Exam Prep
Entity Framework
- What is Entity Framework?
- Entity Framework Overview
- CRUD Many-to-Many Entity Framework
- Entity Relationships
- entity framework – Code-first vs Model/Database-first
- Introduction to Claims based security in .NET4.5 with C# Part 1: the absolute basics
- Why use virtual for class properties in Entity Framework model definitions?
- What is the Use of Virtual Property in Model Class
- ConnectionStrings.com
- Sorting, Filtering, and Paging with the Entity Framework in an ASP.NET MVC Application
- Is it possible to mix database first and code first models with entity framework?
- Using Entity Framework to Successfully Target Multiple Databases
- Scaffolding EntityFramework 6 Unable to cast object of type System.Data.Entity.Core.Objects.ObjectContext
- Entity Framework Loading Related Entities
- Entity Framework Database First Approach
Error Handling
Exam Information
- Exam Ref 70-486: Developing ASP.NET MVC 4 Web Applications
- Developing ASP.NET Web Applications
- Exam 70-486: Developing ASP.NET MVC Web Applications
- 70-486 Practice Exam
- Preparation Guide for Exam 70-486: Developing ASP.NET MVC 4 Web Applications
- Online Practice Exam: 70-486
- Learning Path: Developing ASP.NET MVC Web Applications (Microsoft Exam 70-486)
- exam 70-486
- Exam 70-486 practice
- Exam Ref 70-486: Developing ASP.NET MVC 4 Web Applications
- 70-486 Study Guide available?
- Microsoft Exam 70-486 Study Guide
- Are there any practice exams for 486?
- How to: Edit Deployment Settings in Publish Profile (.pubxml) Files and the .wpp.targets File in Visual Studio Web Projects
General
LINQ
Misc
Mobile
- Detect Mobile Browser Mobile Device in ASP.NET Using C# and VB
- ASP.NET MVC 4 – What’s New for Mobile Development in ASP.NET MVC 4
- Detecting devices and their features
Modules & Handlers
- The Two Interceptors HttpModule and HttpHandlers
- HTTP handler vs HTTP module
- HTTP Handlers and HTTP Modules Overview
MVC Versions
- ASP.NET MVC3 Vs MVC4 Vs MVC5 Vs MVC6 – Web Development Tutorial
- ASP.NET MVC 5 New Features
- What’s New in ASP.NET MVC 5.1
- Difference Between MVC 3, MVC 4, MVC 5 and MVC 6
- Features of MVC 6 and ASP.Net vNext
- DIFFERENCE B/W MVC 4 and MVC 5
- Top 10 Changes in ASP.NET 5 and MVC 6
- WebForms vs. MVC
- ASP.NET vNext: The Next Generation
MVCSiteMap
- NuGet Gallery MvcSiteMapProvider 3.3.4
- How to Config MVCSiteMap to realize the parameters?
- MVC Sitemap Provider — Maintaining URL parameters in breadcrumb trail
- MvcSiteMapProvider 2.0: node for action with parameters – problem 2
- Release v4.6.10 MvcSiteMapProvider
- SiteMapPath – passing params through routing and querystring
- Adding parameter to parent node on mvcsitemap
- Advanced Node Visibility with ISiteMapNodeVisibilityProvider
- Multiple Sitemaps in One Application · maartenba/MvcSiteMapProvider Wiki
- Routing Basics
- Using Action Filter Attributes
OData
- Using Odata in MVC applications
- Expose OData Endpoint in Web API/MVC
- How to Use Web API OData to Build an OData V4 Service without Entity Framework
Paging
Performance
- How To improve ASP.NET MVC Application Performance
- Building Performance Metrics into ASP.NET MVC Applications
- Improve performance of your ASP.NET MVC Application
- Optimizing page speed performance for my MVC 4 web application
- PageSpeed Insights
- 5 Tips to Improve Your ASP.NET MVC Codebase
- Tips and Tricks on how to improve MVC Application Performance
- A Beginner’s Tutorial for Understanding and Implementing Caching in ASP.NET MVC
- Cache Control Directives Demystified
- Exploring Caching in ASP.NET
- MemoryCache.AddOrGetExisting Method (String, Object, DateTimeOffset, String) (System.Runtime.Caching)
- A Beginner’s Guide to HTTP Cache Headers
- 13 content delivery networks to speed up your website
Pipeline
- ASP.NET MVC5 Pipeline
- ASP.NET MVC Request Handling Pipeline
- MVC Pipeline
- ASP.NET MVC The Request Handling Pipeline
- Detailed ASP.NET MVC Pipeline
- ASP.NET Application Life Cycle Overview for IIS 7.0
- aspnet mvc4 request pipeline internals
- Understanding ASP.NET MVC Model Binding
- MVC Pipeline Diagram
- ASP.NET Application Life Cycle Overview
Projects
Reference
- System.ComponentModel.DataAnnotations Namespace ()
- Connection Strings
- Razor Cheat Sheet – Quick Reference [C#-VB.NET Syntax]
- Razon Cheat Sheet
- Google Hosted Libraries
- Microsoft Ajax Content Delivery Network
- MVC Add Controller Unable to Retrieve Metadata Error Info
- Accessing the ASP.NET Web Configuration Tool in Visual Studio 2013
- ASP.NET MVC Cheat Sheets
- Bing Maps Dev Center
- Miscellaneous Topics
- Professional ASP.NET MVC 5
- ASP.NET MVC 4 Cheat Sheet
- MVC Cheat Sheet
Scaffolding
Secure Sites
- What is Cross-site Scripting and How Can You Fix it?
- Anatomy of a Cross-site Request Forgery Attack
- SQL Injection
- What is the AntiForgeryToken and why do I need it?
- Prevent Cross-Site Request Forgery (CSRF) using ASP.NET MVC’s AntiForgeryToken() helper
- Google Search Engine Optimization Starter Guide
SignalR
State Management
Testing
- Moq-moq4
- Rhino Mocks
- 10 Free Tools to Load-Stress Test Your Web Applications
- Inversion of Control
- Unit Testing Explained
- unit testing – What is Mocking?
- How to mock up your Unit Test environment to create alternate realities
- Mocking Frameworks Considered Harmful
Views
- MVC Razor Helpers Cheat Sheet
- jQuery UI
- How to Use ASP.NET MVC 4 Display Modes in Mobile Web Apps
- Stop using the viewport meta tag (until you know how to use it)
- ASP.NET MVC View Engine Comparison
- Multiple Models in a View in ASP.NET MVC 4 / MVC 5
- Dynamic CSS using Razor Engine – CodeProject
- Intellisense in razor files (.cshtml) not work
- HiddenInput and ReadOnly Attributes
- Creating a UI by using Blend for Visual Studio