Работа с объектом модели
Давайте начнем с первой строки в представлении:
@model Razor.Models.Product
Операторы Razor начинаются с символа @
. В данном случае выражение @model
объявляет тип объекта модели, который мы передадим в представление из метода действия. Это позволяет нам обратиться к методам, полям и свойствам объекта модели представления через @Model
, как показано в листинге 5-4. Здесь представлено простое дополнение к методу Index
.
Листинг 5-4: Обращение к свойству объекта модели в Razor представлении
@model Razor.Models.Product
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@Model.Name
</div>
</body>
</html>
Примечание
Обратите внимание, что мы объявили тип объекта модели представления при помощи
@model
(маленькая m), а получили доступ к свойствуName
при помощи@Model
(заглавная M). Это кажется немного запутанным, когда вы начинаете работать с Razor, но вы очень быстро к этому привыкнете.
Если вы запустите проект, вы увидите результат, показанный на рисунке 5-3. Вам не нужно указывать конкретный URL, потому что по умолчанию в MVC проекте запрос для корневого URL (/) направляется к методу действия Index
в контроллере Home
, хотя мы покажем вам, как это изменить, в главе 13.
Рисунок 5-3: Результат прочтения значения свойства в представлении

При помощи выражения @model
мы говорим MVC, с каким видом объекта мы будем работать, а Visual Studio использует это в несколькими способами. Во-первых, когда вы пишете код представления, Visual Studio покажет вам несколько вариантов, касательных имен членов объекта, если вы наберете @Model
и поставите точку, как показано на рисунке 5-4. Это очень похоже на то, как работает автозаполнение для лямбда-выражений, которые передаются вспомогательным методам HTML, о чем мы рассказывали в главе 4.
Рисунок 5-4: Visual Studio предлагает имена для членов объекта, основываясь на выражении @Model

Не менее полезным является то, что Visual Studio будет отмечать ошибки, если есть проблемы с членами объекта модели представления, к которым вы обращаетесь. Вы можете увидеть пример этого на рисунке 5-5, где мы попытались обратиться к методу @Model.NotARealProperty
. Visual Studio понял, что у класса Product
нет такого свойства, и выделил в редакторе ошибку.
Рисунок 5-5: Visual Studio обозначает проблему с выражением, содержащим @Model
