ViewModels in ASP.NET are classes that are specifically designed to represent the data and behavior of a particular view or a group of views. They act as a bridge between the views and the underlying data models. ViewModels are used to encapsulate the data that needs to be displayed or collected by a view, and they often properties or methods that are specific to the view's requirements.

ViewModels are commonly used in ASP.NET MVC (Model-View-Controller) applications, where they help separate the concerns of the view and the data model. By using ViewModels, can ensure that the views are not tightly coupled to the data models, making the application more maintainable and .


Let's say we have a simple web application that displays a list of products. The data for each is stored in a database, and we want to the product name, price, and availability on the view. Instead of using the product model in the view, we can create a ViewModel specifically for this view:

public class ProductViewModel
    public string Name { get; set; }
    public decimal Price { get; set; }
    public bool IsAvailable { get; set; }

In this example, the ProductViewModel class represents the data that needs to be displayed on the view. It includes properties for the product name, price, and availability. By using this ViewModel, we can easily pass the required data to the view exposing the underlying data model.

Inside the controller action, we can populate the ProductViewModel with the necessary data from the data model and pass it to the view:

public ActionResult Index()
    var products = GetProductsFromDatabase(); //  products from the database
    var productViewModels = new List();

    foreach (var product in products)
        var productViewModel = new ProductViewModel
            Name = product.Name,
            Price = product.Price,
            IsAvailable = product.IsAvailable


    return View(productViewModels);

In this example, the Index action retrieves the products from the database and creates a list of ProductViewModel objects. Each ProductViewModel is populated with the necessary data from the product model. Finally, the list of ProductViewModels is passed to the view.

By using ViewModels, we can ensure that the view is only concerned with the data it needs and is not tightly coupled to the underlying data model. This separation of concerns improves the maintainability and flexibility of the application.

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *

Table of Contents