Files
ASP.NET/content/01-Introductory-Sessions/Roadmap/Roadmap.md
T
2025-07-18 14:47:22 +03:30

236 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
To teach the roadmap for **Controllers, Routing, and Return Types** in ASP.NET Core MVC, structuring your lessons effectively with examples will reinforce each concept and help students grasp how everything connects. Heres a guideline with step-by-step instructions, examples, and activities to make your lessons engaging and informative.
---
## Detailed
### **1. Start with the Basics: Understanding MVC Architecture**
**Goal**: Give a quick overview of the MVC pattern, focusing on the role of controllers.
1. [x] **Explain MVC**: Briefly explain the MVC architecture and the role of each component.
- [x] **Model**: Manages data and business logic.
- [x] **View**: Handles UI.
- [x] **Controller**: Acts as the intermediary, processing requests and returning responses.
2. [x] **Controllers Role**: Emphasize the controllers job in handling requests, defining actions, and managing routing.
3. [x] **Activity**: Create a “Hello World” ASP.NET Core MVC app and show the default routing behavior (`HomeController` with `Index` action).
---
### **2. Controllers: Structure, Naming, and Basics**
**Goal**: Help students understand how to structure and create controllers, and introduce them to actions.
1. [x] **Creating a Simple Controller**:
- [x] Show students how to create a new controller in Visual Studio.
- [x] Explain the naming convention (`Controller` suffix) and that controllers are public classes that inherit from `Controller`.
2. [x] **Basic Action Methods**:
- [x] Introduce action methods (`public IActionResult Index()`).
- [x] Discuss the default `Index` action and return type.
3. [x] **Example**:
- [x] `public class ProductController : Controller { public IActionResult Index() { return View(); } public IActionResult Details(int id) { var product = new Product { Id = id, Name = "Sample Product", Price = 25.00m }; return View(product); } }`
4. [x] **Activity**: Have students create their own controller (e.g., `CustomerController`) with a few basic actions.
---
### **3. Routing Basics: Default Routing and Attribute-Based Routing**
**Goal**: Teach students how routing works in ASP.NET Core, starting with the default route and moving to attribute-based routing.
1. [x] **Explain Default Route Configuration**:
- [x] Walk through the default route in `Program.cs`.
- [x] Show how `{controller=Home}/{action=Index}/{id?}` pattern works and introduce the optional parameter `id?`.
2. [x] **Customizing Routes**:
- [x] Demonstrate how to customize the default route by setting different controller and action names as defaults.
3. [x] **Attribute-Based Routing**:
- [x] Introduce attribute routing, explaining the flexibility it offers.
- [x] Show how `[Route]` and HTTP-specific attributes like `[HttpGet]`, `[HttpPost]` control the behavior of action methods.
4. [ ] **Examples**:
`[Route("product")] public class ProductController : Controller { [HttpGet("list")] public IActionResult List() { /*...*/ } [HttpGet("{id:int}")] public IActionResult Details(int id) { /*...*/ } }`
5. [ ] **Activity**: Ask students to add custom routes to their `CustomerController`, like `[HttpGet("all")]` for a list of customers and `[HttpGet("{id}")]` for customer details.
---
### **4. Controllers and Actions: Handling Different HTTP Requests**
**Goal**: Teach students to handle various HTTP requests using controllers and action methods.
1. **Explain HTTP Verbs**:
- Cover the main HTTP methods (`GET`, `POST`, `PUT`, `DELETE`).
- Describe when to use each verb in the context of RESTful APIs.
2. **Creating Actions with HTTP-Specific Attributes**:
- Use `[HttpGet]`, `[HttpPost]`, etc., to restrict action methods to specific HTTP methods.
- Emphasize how to secure data operations (like `POST` for creating data and `DELETE` for deleting data).
3. **Example**:
`public class ProductController : Controller { [HttpGet] public IActionResult List() { /*...*/ } [HttpPost] public IActionResult Create(Product product) { /*...*/ } [HttpDelete("{id}")] public IActionResult Delete(int id) { /*...*/ } }`
4. **Activity**: Have students create CRUD (Create, Read, Update, Delete) actions in their `CustomerController` and test using different HTTP methods.
---
### **5. Return Types: Exploring Different Return Options in Controllers**
**Goal**: Familiarize students with various return types in ASP.NET Core MVC.
1. **Introduce Basic Return Types**:
- **ViewResult** (`View()`)
- **JsonResult** (`Json()`)
- **ContentResult** (`Content()`)
2. **Explain When to Use Each**:
- **ViewResult**: When rendering a view.
- **JsonResult**: For returning JSON data in APIs.
- **ContentResult**: For plain text or HTML responses.
3. **Examples**:
`public class ProductController : Controller { public IActionResult Index() => View(); public JsonResult GetProductJson(int id) => Json(new { id, name = "Product" }); public ContentResult GetMessage() => Content("This is a simple text message."); }`
4. **Advanced Return Types**:
- Introduce `RedirectToActionResult` for redirection and `StatusCodeResult` for custom status codes.
- Explain file return types like `FileResult` for handling downloads.
5. **Activity**: Challenge students to create an API-style action in their controller that returns JSON and another action that returns plain text.
---
### **6. Real-World Application: Creating a Full Flow**
**Goal**: Show students how to build a real-world feature, passing data between controller, model, and view.
1. **Create a Model**:
- Define a `Product` model with properties like `Id`, `Name`, and `Price`.
2. **Controller-Model Interaction**:
- In the controller, create methods that interact with the model and pass data to the view.
- Example:
csharp
Copy code
`public IActionResult Details(int id) { var product = new Product { Id = id, Name = "Laptop", Price = 1200.00m }; return View(product); }`
3. **Pass Data to the View**:
- Instruct students to create a strongly-typed view that displays the `Product` details.
4. **Activity**: Have students build a simple “Product Details” page where they:
- Define a `Product` model.
- Create a controller with `Details` and `List` actions.
- Pass product data to a strongly-typed view.
---
### **7. Practice and Review: Small Project Assignment**
**Goal**: Reinforce the concepts with a project that combines everything theyve learned.
1. **Project Outline**:
- Create a “Product Management” app.
- Implement basic CRUD operations (Create, Read, Update, Delete) for products.
- Use default and custom routing.
- Use attribute-based routing for specific actions.
- Include different return types, like JSON and view results.
2. **Suggested Workflow**:
- Define models (like `Product`).
- Set up routing configurations.
- Create controllers with HTTP-specific actions.
- Return JSON, redirect results, and HTML views based on the action.
3. **Encourage Questions and Discussions**:
- Encourage students to ask questions about design choices or code structure.
- Review each part after completion, reinforcing key points and addressing any misunderstandings.
This structure gives a full overview while also providing practical, hands-on tasks, making it easier for students to build and connect concepts with code. Let me know if youd like further specifics on any area or examples!
## General
### 1. Getting Started with MVC Projects
- [x] • Directory Structure: Detailed explanation of the MVC directory
- [x] (Controllers, Views, Models, wwwroot) and the role of Program.cs in
configuration.
- [ ] *~~• Routing and Controllers: Custom routing, attribute routing, and*~~ ~~*handling various HTTP requests.~~*
- [x] • Actions in Controllers: Exploring different return types and handling
different HTTP requests.
### 2. Controllers and Routing
- [x] • Routing Basics: Attribute-based routing and custom route parameters.
- [x] • Controller Actions: How to handle different return types like JSON, HTML, and redirect results.
- [x] *~~• Routing and Controllers: Custom routing, attribute routing, and*~~ ~~*handling various HTTP requests.
- [x] Return Types in Controllers
### 3. Views in MVC
- [ ] • Creating and Organizing Views: Using view models and best practices for organizing views.
- [ ] • _Layout.cshtml: Creating reusable layouts for consistent page structure.
- [ ] • Bootstrap Integration: Introduction to Bootstrap and using its grid system, forms, and navigation.
- [ ] • Razor View Engine: Using Razor for conditional content, loops, and strongly typed views.
- [ ] • HTML Helpers and Tag Helpers: Leveraging helpers to generate forms, links, and other elements
### 4. OOP & Design Archeticture
- [ ]
### 5. Working with Models
- [ ] • Models and Data Annotations: Detailed use of data annotations like [Required], [StringLength], and creating custom validators.
- [ ] • View Models and Data Models: Mapping between data models and view models to separate business logic from UI.
- [ ] • Model Binding: Automatic model binding from form data to controller actions.
### 6. Forms and Input
- [ ] • Form Creation with HTML Helpers: Build forms with `@Html.BeginForm()` and generate form elements like text boxes and dropdowns.
- [ ] • Form Validation: Server-side validation with data annotations and client-side validation using jQuery Validation.
### 7. Dependency Injection
• Service Lifetimes: Discuss how to choose between Scoped, Transient,
and Singleton in dependency injection.
• Repository Pattern: Abstraction of database operations with
repositories to separate business logic from data access.
• Unit of Work Pattern: Manage transactions across multiple
repository operations.
### 8. Database and Entity Framework (EF Core)
• EF Core Setup: How to install EF Core and configure a connection
string for SQL Server.
• Code First Migrations: Applying migrations to manage database
schema updates.
• Seeding the Database: Automatically populate the database with
initial data.
• Entity Relationships: Define one-to-many and many-to-many
relationships using EF Core.
• LINQ: Use LINQ for querying data in a readable way.
• Tracking and Detaching Entities: Optimizing performance by
detaching entities when needed.
### 9. CRUD Operations
• Full CRUD Cycle: Create, Read, Update, and Delete operations for
managing records.
• Pagination and Filtering: Enable pagination and filtering for large
data sets.
### 10. REST API Development
• What is a REST API?: Introduce REST principles and why APIs are
important in web development.
• Creating a REST API: Use ASP.NET Core to create simple APIs using
controllers and routing.
• Returning JSON: Show how to return JSON responses from API
endpoints.
• Model Binding in APIs: Handle POST, PUT, and DELETE requests,
including validation.
• Swagger Integration: Demonstrate how to use Swagger for API
documentation and testing.
• API Versioning: Explain the need for versioning in APIs and how to
implement it.10. Authentication and Authorization
• ASP.NET Core Identity: User registration, login, and managing user
profiles.
• Role-Based Authorization: Restrict access to parts of the application
based on user roles.
• External Authentication: Implement third-party login with Google,
Facebook, etc.
• JWT Authentication (Optional): For building APIs with token-based
authentication.
### 11. Advanced Views and AJAX
• Partial Views and View Components: Reusable components for
modularizing your views.
• AJAX in ASP.NET Core: How to make asynchronous requests using
AJAX without refreshing the page, and handling responses
dynamically.
• JavaScript Integration: Use JavaScript and jQuery for front-end
interactivity.