Существует несколько способов отправки данных представлению. В случае строго типизированных представлений данные можно отправлять, когда представления визуализируются (либо из метода действия, либо через вспомогательную функцию дескриптора
<partial>
).
Строго типизированные представления и модели представлений
При передаче методу
View
модели или модели представления значение присваивается свойству
@model
строго типизированного представления (обратите внимание на букву
m
в нижнем регистре):
@model IEnumerable<Order>
Свойство
@model
устанавливает тип для представления, к которому затем можно получать доступ с использованием Razor-команды
@Model
(обратите внимание на букву
М
в верхнем регистре):
@foreach (var item in Model)
{
// Делать что-то.
}
В методе действия
RazorViewSyntax
демонстрируется представление, получающее данные из этого метода действия:
[HttpGet]
public IActionResult RazorSyntax([FromServices] ICarRepo carRepo)
являются механизмами для отправки представлению данных небольшого объема. В табл. 31.1 описаны три механизма передачи данных из контроллера в представление (помимо свойства
Model
) либо из контроллера в контроллер.
И
ViewBag
,
и
ViewData
указывают на тот же самый объект; они просто предлагают разные способы доступа к данным. Еще раз взгляните на созданный ранее файл
. Чтобы увидеть результаты, модифицируйте представление
RazorSyntax.cshtml
следующим образом:
@model AutoLot.Models.Entities.Car
@{
ViewData["Title"] = "RazorSyntax";
}
<h1>Razor Syntax</h1>
...
Теперь после запуска приложенияи перехода поссылке
https://localhost:5001/Home/RazorSyntax
вы увидите на вкладке браузера заголовок Razor Syntax —
AutoLot.Mvc
(Синтаксис Razor —
AutoLot.Mvc
).
Вспомогательные функции дескрипторов
Вспомогательные функции дескрипторов являются новым средством, введенным в версии ASP.NET Core. Вспомогательная функция дескриптора (tag helper) — это разметка (специальный дескриптор или атрибут в стандартном дескрипторе), представляющий код серверной стороны, который затем помогает сформировать выпускаемую HTML-разметку Они значительно совершенствуют процесс разработки и улучшают читабельность представлений MVC.
В отличие от вспомогательных функций HTML, которые вызываются как методы Razor, вспомогательные функции дескрипторов представляют собой атрибуты, добавляемые к стандартным HTML-элементам или автономным специальным дескрипторам. В случае использования для разработки среды Visual Studio появляется дополнительное преимущество в виде средства IntelliSense, которое отображает подсказки по встроенным вспомогательным функциям дескрипторов.
Например, показанная ниже вспомогательная функция HTML создает метку для свойства
По всей видимости, синтаксис вспомогательных функций HTML хорошо понятен разработчикам на языке С#, применяющим ASP.NET МУС и Razor. Но его нельзя считать интуитивно понятным, особенно для тех, кто имеет дело с HTML/CSS/JavaScript, но не с языком С#.