In ASP.NET Core, a model represents the data structure of your application. Models are used to define the properties of the data that your application will work with, and they often include validation rules to ensure that the data is in the correct format. This guide will walk you through the steps to create a model in an ASP.NET Core application.

Step 1: Define the Model Class

Models are typically defined as plain C# classes. You can create a new class file in the Models folder of your ASP.NET Core project. Below is an example of a simple Product model.

        
using System.ComponentModel.DataAnnotations;

public class Product
{
public int Id { get; set; } // Unique identifier for the product

[Required(ErrorMessage = "Product name is required.")]
[StringLength(100, ErrorMessage = "Product name cannot exceed 100 characters.")]
public string Name { get; set; } // Name of the product

[Range(0.01, 10000.00, ErrorMessage = "Price must be between 0.01 and 10,000.00.")]
public decimal Price { get; set; } // Price of the product
}

Explanation of the Sample Code

In the Product class:

  • Properties: The class defines three properties: Id, Name, and Price. These properties represent the data structure of the product.
  • Data Annotations:
    • The [Required] attribute indicates that the Name property must have a value. The ErrorMessage property provides a custom error message if validation fails.
    • The [StringLength(100)] attribute limits the length of the name to 100 characters, with a custom error message.
    • The [Range(0.01, 10000.00)] attribute specifies that the Price must be between 0.01 and 10,000.00, also with a custom error message.

Step 2: Using the Model in a Controller

Once the model is defined, it can be used in a controller to handle HTTP requests. Below is an example of a controller that uses the Product model.

        
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private static List<Product> products = new List<Product>
{
new Product { Id = 1, Name = "Product1", Price = 10.00M },
new Product { Id = 2, Name = "Product2", Price = 20.00M }
};

// Action method to get all products
[HttpGet]
public IActionResult GetAllProducts()
{
return Ok(products); // Returns a JSON response with the product list
}

// Action method to create a new product
[HttpPost]
public IActionResult CreateProduct([FromBody] Product product)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState); // Returns a 400 Bad Request if the model is invalid
}

product.Id = products.Count + 1; // Assign a new ID
products.Add(product); // Add the new product to the list
return CreatedAtAction(nameof(GetAllProducts), new { id = product.Id }, product); // Returns a 201 Created response
}
}

Explanation of the Controller Code

In the ProductsController class:

  • GetAllProducts Action: This action method returns a list of products as a JSON response using the Ok() method.
  • CreateProduct Action: This method accepts a Product object from the request body, checks if the model state is valid, and if so, adds the new product to the list. It returns a 201 Created response with the newly created product.

Conclusion

Creating a model in ASP.NET Core is a straightforward process that involves defining a class with properties and validation rules. By following the steps outlined above, you can effectively create models that represent the data structure of your application, ensuring that your application can handle data correctly and efficiently.