ASP.NET Core MVC: создание главной страницы

Создание Home контроллера

Для работы с главной страницей создадим контроллер HomeController в папке Controllers:

using System; // Пример добавления необходимых using'ов, адаптируйте под ваши нужды
using Microsoft.AspNetCore.Mvc; // ...
// ... другие using'и ...

public class HomeController : Controller
{
    // ... (код конструктора и другие методы, адаптированные из AllCarsController) ...

    public IActionResult Index()
    {
        return View();
    }
}

Метод Index возвращает представление (View).

Создание Home View Model

Создадим модель представления HomeViewModel в папке Models/ViewModels:

using System.Collections.Generic;

public class HomeViewModel
{
    public List<Car> FavCars { get; set; }
}

HomeViewModel содержит список автомобилей (FavCars), используя модель Car из Data/Models. Параметр IsFeatured определяет отображение товара на главной странице.

Модификация HomeController

В HomeController создадим объект HomeViewModel и заполним его данными:

public IActionResult Index()
{
    HomeViewModel homeCars = new HomeViewModel
    {
        FavCars = _carRep.GetFeaturedCars()
    };
    return View(homeCars);
}

_carRep.GetFeaturedCars() возвращает список автомобилей с IsFeatured == true.

Создание представления Index.cshtml

Создадим файл Index.cshtml в папке Views/Home. Он отображает данные из HomeViewModel:

@{
    ViewData["Title"] = "Home Page";
    Layout = "_Layout";
}

@model HomeViewModel

<h2>Лучшие автомобили</h2>

@foreach (var car in Model.FavCars)
{
    @await Html.PartialAsync("_AllCars", car)
}

Представление использует частичное представление _AllCars.cshtml для отображения каждого автомобиля.

Улучшение _Layout.cshtml

Улучшим внешний вид главной страницы, изменив _Layout.cshtml:

  • Год изменён на 2019.
  • Добавлен копирайт.
  • Удалена лишняя ссылка.
  • Имя в шапке изменено на «Itprager».
  • Добавлена ссылка на главную страницу (/).
  • Класс fixed-top удалён из шапки.

Запуск и проверка

Запустим приложение. Главная страница отобразит автомобили с IsFeatured == true. Доступ к ней осуществляется без указания контроллера и действия в URL (например, /Home/Index не требуется). По умолчанию вызывается действие Index в HomeController.

Что будем искать? Например,программа