Learn ASP.NET from Scratch

A learning roadmap for ASP.NET Core

  ·   7 min read

If you read my last post, you read all of the things that I’d like to learn this year, starting with ASP.NET Core. I’ve spent the past week gathering resources from Microsoft’s documentation, blogs, forums and internet searches to create myself a 17 module learning plan.

If you’re looking to get your feet wet on Microsoft’s full stack web framework, then I hope these resources are helpful for you too.

FYI: This learning path assumes that you have a basic knowledge of C# syntax and a general knowledge of the available libraries. If you don’t, Codecademy has a free course!

The ASP.NET Core Learning Path #

Introduction to ASP.NET #

1. dotnet cli #

Module Goal: Be able to explain the most common commands with their options and use them throughout the development process.

Resources:

2. ASP.NET Web Application Starting Template #

Module Goal: Be able to explain the purpose and use of each of the files and folders that are generated by the starting template of an ASP.NET application.

Resources:

3. Dependency Injection #

Module Goal: Describe the purpose of Dependency Injection and be capable of configuring dependencies within ASP.NET’s Dependency Injection framework.

Resources:

4. Application Configuration using CreateDefaultBuilder #

Module Goal: Explain CreateDefaultBuilder’s purpose and uses. Identify common configuration patterns in ASP.NET Core.

Resources:

Creating APIs with ASP.NET Core #

5. Minimal API #

Module Goal: Create an API that responds to requests with at least 4 different endpoints. Create an endpoint that returns multiple status codes based on a condition.

Resources:

6. Connecting Your API to PostgreSQL using Entity Framework #

Module Goal: Connect the fifth module’s API to a PostgreSQL database using Entity Framework and create API endpoints to handle CRUD operations.

Resources:

6a. Connect to PostgreSQL with ADO.NET #

Module Goal: Branch the previous module’s project and access the PostgreSQL database without using EF. Perform data calls directly on ADO.NET.

Resources:

7. Controller-Based API #

Module Goal: Explain the differences and cost/benefit of a Controller-Based API vs a Minimal API. Refactor your Minimal API into a Controller-Based API.

Resources:

8. Adding Built-In and Custom Middleware #

Module Goal: Identify most common ASP.NET middleware and be able to explain what it is used for. Create your own middleware function and mount it to the application.

Resources:

The Model-View-Controller Design Pattern #

9. ASP.NET MVC Starting Templates & Basic Routing #

Module Goal: Create an MVC application that responds to GET and POST requests at at multiple different routes.

Resources:

10. Binding Models to your Views in Razor Syntax #

Module Goal: Create a Razor view from scratch. Create a model to attach to that view. Enable CRUD operations on the page model from scratch.

Resources:

11. Using Tag Helpers for User Input other Useful Things #

Module Goal: Identify and explain the most common ASP.NET tag helpers. Handle different types of user input. Create your own custom tag helper.

Resources:

12. Using DataAnnotations to Validate Your Models #

Module Goal: Identify and explain the most common ASP.NET DataAnnotations. Add validation to your model.

Resources:

13. Styling your view models #

Module Goal: Describe common approaches to styling Views in ASP.NET Core. Implement CSS styles and connect the application to Bootstrap. Create a layout and edit its styles.

Resources:

14. ASP.NET Core Identity, and Adding Authentication & Authorization #

Module Goal: Using ASP.NET Core Identity, add authentication to your application. Describe the common authorization methods used by ASP.NET Core, choose one to implement into your MVC application.

Resources:

  • Andrew Lock - ASP.NET Core in Action
    • 14.1 Introducing authentication and authorization - 402
    • 14.2 What is ASP.NET Core Identity - 412
    • 14.4 Adding ASP.NET Core Identity to an existing project - 423
    • 14.5 Managing users: adding new claims to users - 428
    • 15 Authorization: securing your application 432

Polish and Deploy Your Application #

15. Add unit tests for your action methods using NUnit #

Module Goal: Add tests to a controller of your ASP.NET application. Create tests that increase the confidence of the application working. Understand the basic syntax of NUnit as it relates to the form of a unit test.

Resources:

16. Publish your application with IIS Express #

Module Goal: Describe the use of IIS Express and the term “publish”. Explain the hosting model of ASP.NET Core. Publish your MVC application to IIS Express.

Resources:

16a. Deploy your application to Linux with Nginx #

Module Goal: Provision an EC2 instance of Ubuntu. Configure Nginx to serve the application on a domain and point a DNS provider to the address. Bonus points for setting up CI/CD with Github Actions.

Resources:

17. Configure Logging to Monitor your application #

Module Goal: Add searchable and useful logging to the application using Microsoft-provided logging to monitor the application.

Resources: