Приведенный далее код создает список строк, сортирует их с применением функции SortList() и выводит отсортированный список в браузер:

@{

   var myList = new List {"C", "A", "Z", "F"};

   var sortedList = SortList(myList);

}

@foreach (string s in sortedList)

{

   @s@: 

}


Вот еще один пример, где создается делегат, который можно использовать, чтобы установить для строки полужирное начертание:

@{

    Func b = @@item;

}

This will be bold: @b("Foo")

Кроме того, Razor содержит вспомогательные методы HTML, которые предоставляются инфраструктурой ASP.NET Core, например, DisplayForModel() и EditorForModel(). Первый применяет рефлексию к модели представления для отображения на веб-странице. Второй тоже использует рефлексию, чтобы создать HTML-разметку для формы редактирования (имейте в виду, что он не поставляет дескрипторы Form, а только разметку для модели). Вспомогательные методы HTML подробно рассматриваются позже в главе.

Наконец, в версии ASP.NET Core появились вспомогательные функции дескрипторов (tag helper), которые объединяют разметку и код; они будут обсуждаться далее в главе.

<p id="AutBody_Root1441"><strong>Представления</strong></p>

Представления — это специальные файлы кода с расширением cshtml, содержащие сочетание разметки HTML, стилей CSS, кода JavaScript и кода Razor.

<p id="AutBody_Root1442"><strong>Каталог Views</strong></p>

Внутри каталога Views хранятся представления в проектах ASP.NET Core, использующих паттерн MVC. В самом каталоге Views находятся два файла: _iewStart.cshtml и _ViewImports.cshtml.

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

@{

    Layout = "_Layout";

}

Файл _ViewImports.cshtml служит для импортирования совместно используемых директив, таких как операторы using. Содержимое применяется ко всем представлениям в том же каталоге или подкаталоге, где находится файл _ViewImports. Добавьте оператор using для AutoLot.Models.Entities:

@using AutoLot.Mvc

@using AutoLot.Mvc.Models

@using AutoLot.Models.Entities

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

Строка @addTegHelper будет раскрыта вместе со вспомогательными функциями дескрипторов.

На заметку! А для чего служит ведущий символ подчеркивания в _ViewStart.html, _ViewImports.cshtml и _Layout.cshtml? Механизм визуализации Razor изначально создавался для платформы WebMatrix, где не разрешалось напрямую визуализировать файлы, имена которых начинались с символа подчеркивания. Все ключевые файлы (вроде компоновки и конфигурации) имеют имена, начинающиеся с символа подчеркивания. Это не соглашение MVC, поскольку здесь отсутствует проблема, которая была в WebMatrix, но наследие символа подчеркивания продолжает существовать.

Как упоминалось ранее, каждый контроллер получает собственный каталог внутри каталога Views, в котором хранятся его специфичные представления. Имя такого каталога совпадает с именем контроллера (без суффикса Controller). Скажем, в каталоге Views\Cars содержатся все представления для CarsController. Представления обычно именуются согласно методам действий, которые их визуализируют, хотя их имена можно изменять, как уже было показано.

<p id="AutBody_Root1443"><strong>Каталог Shared</strong></p>

Внутри каталога Views есть специальный каталог по имени Shared, в котором хранятся представления, доступные всем контроллерам и действиям. Как уже упоминалось, если запрошенный файл представления не удалось найти в каталоге, специфичном для контроллера, тогда поиск производится в каталоге Shared.

<p id="AutBody_Root1444"><strong>Каталог DisplayTemplates</strong></p>
Перейти на страницу:

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