Создание 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.