Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 606 607 608 609 610 611 612 613 614 ... 642

Запустите приложение и перейдите в браузере по ссылке https://localhost:5001/Home/RazorSyntax (в случае использования Visual Studio и IIS вам понадобится изменить номер порта). Так как в проекте отсутствует представление, которое может удовлетворить запрос, в браузер возвращается исключение. Вспомните из главы 29, что внутри метода Configure() класса Startup в конвейер HTTP добавляется вызов UseDeveloperExceptionPage(), если средой является Development. Результаты работы этого метода показаны на рис. 31.1.

Страница исключений для разработчиков предоставляет обширную информацию для отладки приложения, в числе которой низкоуровневые детали исключения, укомплектованные трассировкой стека. Теперь закомментируйте приведенную ниже строку в методе Configure() и замените ее "стандартным" обработчиком ошибок:

if (env.IsDevelopment())

{

<b>  // app.UseDeveloperExceptionPage();</b>

<b>  app.UseExceptionHandler(&quot;/Home/Error&quot;);</b>

  ...

}

Снова запустив приложение и перейдя по ссылке http://localhost:5001/Home/RazorSyntax, вы завидите стандартную страницу ошибок, которая показана на рис. 31.2.

На заметку! Во всех примерах URL в этой главе применяется веб-сервер Kestrel и порт 5001. Если вы имеете дело с Visual Studio и веб-сервером IIS Express, тогда используйте URL из профиля для IIS в файле launchsettings.json.

Стандартный обработчик ошибок выполняет перенаправление ошибок методу действия Error класса HomeController. Не забудьте восстановить применение страницы исключений для разработчиков в методе Configure():

if (env.IsDevelopment())

{

<b>  app.UseDeveloperExceptionPage();</b>

  ...

}

Дополнительные сведения о настройке обработки ошибок и доступных вариантах ищите в документации по ссылке 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.

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

Первым делом добавьте новое представление, щелкнув правой кнопкой мыши на имени каталога ViewsHome в проекте AutoLot.Mvc и выбрав в контекстном меню пункт AddNew Item (Добавить►Новый элемент). В открывшемся диалоговом окне Add New Item — AutoLot.Mvc (Добавить новый элемент — AutoLot.Mvc) выберите шаблон Razor View — Empty (Представление Razor — Пустое) и назначьте представлению имя RazorSyntax.cshtml.

На заметку! Контекстное меню, открывшееся в результате щелчка правой кнопкой мыши на ViewsHome, содержит также пункт AddView (Добавить►Представление). Тем не менее, его выбор приводит к переходу в то же самое диалоговое окно Add New Item.

Представления Razor, как правило, строго типизированы с использованием директивы @model (обратите внимание на букву m в нижнем регистре). Измените тип нового представления на сущность Car, добавив в начало файла представления такой код:

@model AutoLot.Models.Entities.Car

Поместите в верхнюю часть страницы дескриптор <hl>. Он не имеет ничего общего с Razor, а просто добавляет заголовок к странице:

&lt;h1&gt;Razor Syntax&lt;/h1&gt;

Блоки операторов Razor открываются с помощью символа @ и являются либо самостоятельными операторами (вроде foreach), либо заключаются в фигурные скобки, как демонстрируется в следующих примерах:

@for (var i = 0; i &lt; 15; i++)

{

    // Делать что-то.

}

@{

    // Блок кода.

    var foo = &quot;Foo&quot;;

    var bar = &quot;Bar&quot;;

    var htmlString = &quot;&lt;ul&gt;&lt;li&gt;one&lt;/li&gt;&lt;li&gt;two&lt;/li&gt;&lt;/ul&gt;&quot;;

}

Чтобы вывести значение переменной в представление, просто укажите символ @ с именем переменной, что эквивалентно вызову Response.Write(). Как видите, при выводе напрямую в браузер после оператора нет точки с запятой:

@foo

&lt;br /&gt;

@htmlString

&lt;br /&gt;

@foo.@bar

&lt;br /&gt;

В предыдущем примере две переменные комбинируются посредством точки между ними (@foo.@bar). Это не обычная "точечная" запись в языке С#, предназначенная для навигации по цепочке свойств. Здесь просто значения двух переменных выводятся в поток ответа с физической точкой между ними. Если вас интересует "точечная" запись в отношении переменной, тогда примените @ к переменной и записывайте свой код стандартным образом:

1 ... 606 607 608 609 610 611 612 613 614 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий