> For the complete documentation index, see [llms.txt](https://jen-hsuan-hsieh.gitbook.io/asp-net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jen-hsuan-hsieh.gitbook.io/asp-net/chapter1/1.1.the-complete-asp.net-mvc-5-course/12aspnet-mvc-fundamentals/124viewmodel.md).

# 1.2.4.ViewModel

* Why need ViewModel?
  * It's a model specifically built for a view
* To establish multiple model's relation, we can use ViewModel to do that
  * 1.Create a folder which is called **ViewModel**
  * 2.Create a ViewModel class which contains models

    ```
          using System;
          using System.Collections.Generic;
          using System.Linq;
          using System.Web;
          using Vidly2.Models;
          namespace Vidly2.ViewModels
          {
              public class RandomMovieViewModel
              {
                  public Movie Movie { get; set; }
                  public List<Customer> Customers { get; set; }
              }
          }
    ```
  * 3.Modify controller

```
        using System.Web;
        using System.Web.Mvc;
        using Vidly2.Models;
        using Vidly2.ViewModels;
        namespace Vidly2.Controllers
        {
            public class MoviesController : Controller
            {

                // GET: Movies/Random
                public ActionResult Random()
                {
                    var movie = new Movie() { Name = "Shrek" };
                    var customers = new List<Customer>
                    {
                        new Customer {Name = "Customer 1"},
                        new Customer {Name = "Customer 2"}
                    };

                    var viewModel = new RandomMovieViewModel
                    {
                        Movie = movie,
                        Customers = customers
                    };

                    return View(viewModel);
                }
            }
        }
```

* 4.Modify View

```
@model Vidly2.ViewModels.RandomMovieViewModel
    @{
        ViewBag.Title = "Random";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

h2@Model.Movie.Name/h2
```
