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/ ➝ Calls HomeController.Index()
  • http://localhost:5000/Home/About ➝ Calls HomeController.About()

✅ Summary

ComponentPurpose
Program.csApplication 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

Popular posts from this blog

Car Wash System vb.net

Face recognition using EmguCV 3.0 and typing pattern recognition

Student Information System - AngularJS , ASP.NET API, C#