Книга: ASP.NET MVC Framework

Поиск элементов в коллекции ViewData

Поиск элементов в коллекции ViewData

Легко представить себе ситуацию, в которой на стороне представления заранее не определено, где находятся данные — в коллекции viewData или же в свойствах объекта viewData.Model. Для поиска этого элемента доступен специальный метод viewData.Eval(), осуществляющий поиск в коллекции элементов и в свойствах объекта модели, при этом поддерживается синтаксис точки (.) между именами свойств объектов.

Например, в представлении используется метод viewData.Eval("customer. lastname"), тогда будет выполнен поиск элемента по описанному далее алгоритму.

1. Будет проверено наличие значения ViewData["customer. lastname"].

2. Если значение отсутствует для приведенного ранее элемента коллекции, то будет осуществлен поиск элемента ViewData["customer"] .

3. В случае если элемент найдет по ключу "customer", то будет осуществлена попытка получить значение ViewData["customer"].lastname, если же такого свойства у объекта, содержащегося под ключом "customer", найдено не будет, будет осуществлена попытка найти элемент вложенной коллекции ViewData["customer"]["lastname"].

4. В случае провала предыдущих попыток поиска будут проверены свойства объекта Model: ViewData.Model.customer.lastname и ViewData.Model.customer["lastname"].

Описанный ранее метод поиска приводит к нескольким выводам — при поиске элементы коллекции viewData имеют приоритет над свойствами объекта, передаваемого через свойство в Model, поэтому следует не допускать совпадения именований свойств объекта, передаваемого через Model и элементов коллекции ViewData.

Использование метода viewData.Eval несет в себе также и возможность передавать строку для форматирования вывода данных.

<%= ViewData.Eval("customer.regDate", "Клиент с {0:yyyy} года.") %>

Метод viewData используется внутренней инфраструктурой MVC Framework для связывания данных с полями ввода и вывода информации о проверке корректности данных, о чем подробнее будет рассказано далее в этой главе вразд. "Валидация данных форм”.

Оглавление книги


Генерация: 1.496. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз