Приведенный далее код создает список строк, сортирует их с применением функции SortList()
и выводит отсортированный список в браузер:
@{
var myList = new List
var sortedList = SortList(myList);
}
@foreach (string s in sortedList)
{
@s@:
}
Вот еще один пример, где создается делегат, который можно использовать, чтобы установить для строки полужирное начертание:
@{
Func
}
This will be bold: @b("Foo")
Кроме того, Razor содержит вспомогательные методы HTML, которые предоставляются инфраструктурой ASP.NET Core, например, DisplayForModel()
и EditorForModel()
. Первый применяет рефлексию к модели представления для отображения на веб-странице. Второй тоже использует рефлексию, чтобы создать HTML-разметку для формы редактирования (имейте в виду, что он не поставляет дескрипторы Form, а только разметку для модели). Вспомогательные методы HTML подробно рассматриваются позже в главе.
Наконец, в версии ASP.NET Core появились
Представления
Представления — это специальные файлы кода с расширением cshtml
, содержащие сочетание разметки HTML, стилей CSS, кода JavaScript и кода Razor.
Каталог Views
Внутри каталога 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
. Представления обычно именуются согласно методам действий, которые их визуализируют, хотя их имена можно изменять, как уже было показано.
Каталог Shared
Внутри каталога Views
есть специальный каталог по имени Shared
, в котором хранятся представления, доступные всем контроллерам и действиям. Как уже упоминалось, если запрошенный файл представления не удалось найти в каталоге, специфичном для контроллера, тогда поиск производится в каталоге Shared
.
Каталог DisplayTemplates