Understanding ASP.NET Core Project Structure
Understanding ASP.NET Core Project Structure
ASP.NET Core follows a structured and modular approach. Let's break down the key components of a typical ASP.NET Core project.
🔹 1️⃣ Project Structure Overview
📂 MyAspNetApp/ ├── 📄 Program.cs ➝ Application Entry Point ├── 📄 appsettings.json ➝ Configuration Settings ├── 📂 wwwroot/ ➝ Static Files (CSS, JS, Images) ├── 📂 Controllers/ ➝ Handles HTTP Requests (MVC API) ├── 📂 Models/ ➝ Defines Data Structures ├── 📂 Views/ ➝ Handles UI Rendering (Razor Views for MVC) ├── 📂 Middleware/ ➝ Custom Request Processing Logic
🔹 2️⃣ Program.cs - Application Entry Point
- This is where the ASP.NET Core app starts.
- It registers services, configures middleware, and sets up the request pipeline.
Example Program.cs File:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container
builder.Services.AddControllersWithViews(); // Enables MVC
var app = builder.Build();
// Configure Middleware Pipeline
app.UseStaticFiles(); // Serve static files (CSS, JS, Images)
app.UseRouting(); // Enables routing
app.UseAuthorization(); // Enables authentication
// Define Routes
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}"
);
app.Run();
Key Takeaways:
builder.Services.AddControllersWithViews();
➝ Adds MVC functionality.app.UseRouting();
➝ Enables routing for controllers.app.UseAuthorization();
➝ Enables security/authentication.app.MapControllerRoute();
➝ Defines the default route (Controller, Action, ID).
🔹 3️⃣ Controllers (Handles HTTP Requests)
📂 Controllers/ ├── HomeController.cs
Controllers handle requests and return responses (JSON, Views, etc.).
Example Controller (HomeController.cs)
using Microsoft.AspNetCore.Mvc;
public class HomeController : Controller
{
public IActionResult Index()
{
return View(); // Renders the corresponding View (Index.cshtml)
}
public IActionResult About()
{
return Content("About Page");
}
}
Key Takeaways:
Index()
➝ Loads a View (Views/Home/Index.cshtml)About()
➝ Returns plain text (Content()
)
🔹 4️⃣ Models (Data Handling Layer)
📂 Models/ ├── Product.cs
Models define data structures and are used to transfer data between controllers and views.
Example Model (Product.cs)
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
Key Takeaways:
- Models represent data entities (e.g., Product, User, Order).
- Used for data validation and business logic.
🔹 5️⃣ Views (UI Layer for MVC Applications)
📂 Views/ ├── Home/ │ ├── Index.cshtml │ ├── About.cshtml
Views define the HTML UI for the application using Razor syntax (.cshtml).
Example View (Index.cshtml)
@{
ViewData["Title"] = "Home Page";
}
<h1>Welcome to ASP.NET Core!</h1>
<p>This is the home page.</p>
Key Takeaways:
- Uses Razor syntax (
@{}
for C# code). - Dynamically renders data in MVC applications.
🔹 6️⃣ Middleware (Custom Request Processing Logic)
📂 Middleware/ ├── CustomMiddleware.cs
Middleware intercepts HTTP requests and processes them before reaching the controller.
Example Custom Middleware (CustomMiddleware.cs)
public class CustomMiddleware
{
private readonly RequestDelegate _next;
public CustomMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
Console.WriteLine($"Request Path: {context.Request.Path}");
await _next(context);
}
}
To use this middleware, register it in Program.cs
:
app.UseMiddleware<CustomMiddleware>();
Key Takeaways:
- Middleware runs before controllers process the request.
- Used for logging, authentication, exception handling, etc.
🔹 7️⃣ Default Routing in ASP.NET Core
ASP.NET Core uses convention-based routing by default:
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}"
);
This means:
http://localhost:5000/
➝ CallsHomeController.Index()
http://localhost:5000/Home/About
➝ CallsHomeController.About()
✅ Summary
Component | Purpose |
---|---|
Program.cs | Application entry point, registers services & middleware |
Controllers/ | Handles HTTP requests and returns data/views |
Models/ | Defines data structures and business logic |
Views/ | Handles UI rendering (for MVC apps) |
Middleware/ | Custom logic that runs before controllers |
wwwroot/ | Static files like CSS, JS, Images |
Comments
Post a Comment