Дополнительные сведения о настройке обработки ошибок и доступных вариантах ищите в документации по ссылке https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/error-handling
.
Механизм визуализации и синтаксис Razor
Механизм визуализации Razor задумывался как усовершенствование механизма визуализации Web Forms и использует Razor в качестве основного языка. Razor — это код серверной стороны, который встраивается в представление, базируется на C# и избавляет от многих неудобств, присущих механизму визуализации Web Forms. Встраивание Razor в HTML и CSS приводит к тому, что код становится намного чище и лучше для восприятия, чем в случае, когда применяется синтаксис механизма визуализации Web Forms.
Первым делом добавьте новое представление, щелкнув правой кнопкой мыши на имени каталога Views\Home
в проекте AutoLot.Mvc
и выбрав в контекстном меню пункт Add►New Item (Добавить►Новый элемент). В открывшемся диалоговом окне Add New Item — AutoLot.Mvc
(Добавить новый элемент — AutoLot.Mvc
) выберите шаблон Razor View — Empty (Представление Razor — Пустое) и назначьте представлению имя RazorSyntax.cshtml
.
На заметку! Контекстное меню, открывшееся в результате щелчка правой кнопкой мыши на Views\Home
, содержит также пункт Add►View (Добавить►Представление). Тем не менее, его выбор приводит к переходу в то же самое диалоговое окно Add New Item.
Представления Razor, как правило, строго типизированы с использованием директивы @model
(обратите внимание на букву m
в нижнем регистре). Измените тип нового представления на сущность Car
, добавив в начало файла представления такой код:
@model AutoLot.Models.Entities.Car
Поместите в верхнюю часть страницы дескриптор <hl
>. Он не имеет ничего общего с Razor, а просто добавляет заголовок к странице:
Razor Syntax
Блоки операторов Razor открываются с помощью символа @
и являются либо самостоятельными операторами (вроде foreach
), либо заключаются в фигурные скобки, как демонстрируется в следующих примерах:
@for (var i = 0; i < 15; i++)
{
// Делать что-то.
}
@{
// Блок кода.
var foo = "Foo";
var bar = "Bar";
var htmlString = "
";
}
Чтобы вывести значение переменной в представление, просто укажите символ @
с именем переменной, что эквивалентно вызову Response.Write()
. Как видите, при выводе напрямую в браузер после оператора нет точки с запятой:
@foo
@htmlString
@foo.@bar
В предыдущем примере две переменные комбинируются посредством точки между ними (@foo.@bar
). Это не обычная "точечная" запись в языке С#, предназначенная для навигации по цепочке свойств. Здесь просто значения двух переменных выводятся в поток ответа с физической точкой между ними. Если вас интересует "точечная" запись в отношении переменной, тогда примените @
к переменной и записывайте свой код стандартным образом:
@foo.ToUpper()
Если вы хотите вывести низкоуровневую HTML-разметку, тогда используйте так называемые
@Html.Raw(htmlString)
В блоках кода можно смешивать разметку и код. Строки, начинающиеся с разметки, интерпретируются как HTML, а остальные строки — как код. Если строка начинается с текста, который не является кодом, вы должны применять указатель содержимого (@:
) или указатель блока содержимого (
). Обратите внимание, что строки могут меняться с одного вида на другой и наоборот. Ниже приведен пример:
@{
@:Straight Text
Lines without HTML tag
}
При желании отменить символ @
используйте удвоенный @
. Кроме того, механизм Razor достаточно интеллектуален, чтобы обрабатывать адреса электронной почты, поэтому отменять символ @
в них не нужно. Если необходимо заставить Razor трактовать символ @
подобно маркеру Razor, тогда добавьте круглые скобки:
@@foo
test@foo
test@(foo)
Предыдущий код выводит [email protected]
, @foo
, test@foo
и testFoo
.
Комментарии Razor открываются с помощью @*
и закрываются посредством *@
:
@*
Multiline Comments
Hi.
*@
В Razor также поддерживаются внутристрочные функции. Например, следующая функция сортирует список строк:
@functions {
public static IList
var list = from s in strings orderby s select s;
return list.ToList();
}
}