Читаем Язык программирования C#9 и платформа .NET5 полностью

Вспомогательная функция HTML под названием DisplayNameFor отображает имя свойства, если только свойство не декорировано или атрибутом Display(Name=""), или атрибутом DisplayName(""), и тогда применяется отображаемое значение. Метод DisplayFor отображает значение для свойства модели, указанное в выражении. Обратите внимание, что для получения названия производителя используется навигационное свойство MakeNavigation.

Запустив приложение и перейдя на страницу RazorSyntax, вы можете быть удивлены тем, что шаблон отображения Car не применяется. Причина в том, что шаблон находится в каталоге представления Cars, а метод действия RazorSyntax и представление вызываются из HomeController. Методы действий в HomeController будут осуществлять поиск представлений в каталогах Home и Shared и потому не найдут шаблон отображения Car.

Если вы переместите файл Car.cshtml в каталог Shared\DisplayTemplates, тогда представление RazorSyntax будет использовать шаблон отображения Car.

<p id="AutBody_Root1447"><strong>Шаблон отображения CarWithColor</strong></p>

Шаблон CarWithColor похож на шаблон Car. Разница в том, что этот шаблон изменяет цвет текста Color (Цвет) на основе значения свойства Color модели. Добавьте в каталог Cars\DisplayTemplates новый шаблон по имени CarWithColors.cshtml и приведите разметку к следующему виду:

@model Car


 

   

      @Html.DisplayNameFor(model => model.PetName)

   

   

      @Html.DisplayFor(model => model.PetName)

   

   

      @Html.DisplayNameFor(model => model.MakeNavigation)

   

   

      @Html.DisplayFor(model => model.MakeNavigation.Name)

   

   

      @Html.DisplayNameFor(model => model.Color)

   

   

      @Html.DisplayFor(model => model.Color)

   

 

Чтобы применить шаблон CarWithColors.cshtml вместо Car.cshtml, вызовите DisplayForModel с именем шаблона (обратите внимание, что правила местоположения по-прежнему актуальны):

@Html.DisplayForModel("CarWithColors")

<p id="AutBody_Root1448"><strong>Каталог EditorTemplates</strong></p>

Каталог EditorTemplates работает аналогично каталогу DisplayTemplates, но находящиеся в нем шаблоны используются для редактирования.

<p id="AutBody_Root1449"><strong>Шаблон редактирования Car</strong></p>

Создайте внутри каталога Views\Cars новый каталог под названием EditorTemplates и добавьте в него новое представление по имени Car.cshtml. Удалите сгенерированный код вместе с комментариями и замените его показанным ниже кодом, который является разметкой для редактирования сущности Car:

@model Car

   

 

   

   

   

   

   

   

   

В шаблоне редактирования задействовано несколько вспомогательных функций дескрипторов (asp-for, asp-items, asp-validation-for и asp-validation-summary), которые рассматриваются позже в главе.

Шаблон редактирования Car вызывается с помощью вспомогательных функций HTML, которые называются EditorFor и EditorForModel. Подобно шаблонам отображения упомянутые функции будут искать представление с именем Car.cshtml или с таким же именем, как у метода.

<p id="AutBody_Root1450"><strong>Компоновки</strong></p>

По аналогии с мастер-страницами Web Forms в MVC поддерживаются компоновки, которые совместно используются представлениями, чтобы обеспечить согласованный внешний вид страниц сайта. Перейдите в каталог Views\Shared и откройте файл _Layout.cshtml. Это полноценный HTML-файл с дескрипторами и .

Файл _Layout.cshtml является основой, в которую визуализируются другие представления. Кроме того, поскольку большая часть страницы (такая как разметка для навигации и верхнего и/или нижнего колонтитула) поддерживается страницей компоновки, страницы представлений сохраняются небольшими и простыми. Найдите в файле _Layout.cshtml следующую строку кода Razor:

@RenderBody

Эта строка указывает странице компоновки, где визуализировать представление. Теперь перейдите к строке, расположенной прямо перед закрывающим дескриптором

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT