ASP.NET MVC 4

ASP.NET MVC 4

Адам Фриман

Работа с объектом модели

Давайте начнем с первой строки в представлении:

@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
или RSS канал: Что новенького на smarly.net