Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На заметку! Исходный код, рассматриваемый в этой главе, находится в папке
Chapter_31Введение в представления ASP.NET Core
При построении служб ASP.NET Core были задействованы только части "М " (модели) и "С" (контроллеры ) паттерна МУС. Пользовательский интерфейс создается с применением части "V", т.е. представлений паттерна МУС. Представления строятся с использованием кода HTML, JavaScript, CSS и Razor. Они необязательно имеют страницу базовой компоновки и визуализируются из метода действия контроллера или компонента представления. Если вы имели дело с классической инфраструктурой ASP.NET МУС, то все должно выглядеть знакомым.
Экземпляры класса ViewResult и методы действий
Как кратко упоминалось в главе 29, объекты результатов
ViewResultPartialViewActionResultControllerPartialViewResultViewResultПо соглашению, принятому в ASP.NET Core (что было и в ASP.NET МУС), экземпляр View или PartialView визуализирует файл
*.cshtmlControllerSharedViewsНапример, следующий код будет визуализировать представление
SampleAction.cshtmlViewsSampleViewsShared[Route("[controller]/[action]")]public class SampleController: Controller{ public ActionResult SampleAction() { return View(); }}На заметку! Первым производится поиск в каталоге с именем контроллера. Если представление там не обнаружено, то поиск выполняется в каталоге
SharedЧтобы визуализировать представление с именем, которое отличается от имени метода действия, передавайте имя файла (без расширения
cshtmlCustomViewName.cshtmlpublic ActionResult SampleAction(){ return View("CustomViewName");}Последние две перегруженные версии предназначены для передачи объекта данных, который становится моделью для представления. В первом примере применяется стандартное имя представления, а во втором указывается другое имя представления:
public ActionResult SampleAction(){ var sampleModel = new SampleActionViewModel(); return View(sampleModel);}public ActionResult SampleAction(){ var sampleModel = new SampleActionViewModel(); return View("CustomViewName",sampleModel);}В следующем разделе подробно рассматривается механизм визуализации Razor с использованием представления, которое визуализируется из метода действия по имени
RazorSyntax()HomeControllerCarCarRepoCarОткройте
HomeControllerControllersAutoLot.Mvcusingusing AutoLot.Dal.Repos.Interfaces;Затем добавьте в контроллер метод
Razorsyntax()[HttpGet]public IActionResult RazorSyntax([FromServices] ICarRepo carRepo){ var car = carRepo.Find(1); return View(car);}Метод действия декорируется атрибутом
HTTPGet/Home/RazorSyntaxGETFromServicesICarRepoICarRepoCarViewResuitView()RazorSyntax.cshtmlViewsHomeViewsShared