UR.ANUS
Asp.net mvc framework
вернуться

Магдануров Гайдар Ильдарович

Шрифт:

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 для связывания данных с полями ввода и вывода информации о проверке корректности данных, о чем подробнее будет рассказано далее в этой главе вразд. "Валидация данных форм”.

Генерация разметки представлением

Для создания логики генерации представления в MVC Framework используются несколько подходов.

? Вложенный управляющий код. Логика отображения данных описывается непосредственно внутри файла разметки ASPX с использованием стандартного синтаксиса <% %> для управляющих конструкций и синтаксиса <%= %> для вывода строковых значений непосредственно в результирующий код разметки.

? Вспомогательные методы для генерации разметки. Вспомогательные методы позволяют многократно использовать фрагменты логики генерации представления и представляют собой вызовы некоторых методов, возвращающих строки. В библиотеке MVC Framework существует большой набор готовых вспомогательных методов, представленных как методы-расширения для классов Html, Url, Ajax, однако в качестве вспомогательного метода может быть использован любой метод, возвращающий строковое значение.

? Серверные элементы управления. Несмотря на отсутствие возможности использования событийной модели, серверные элементы управления ASP.NET по-прежнему могут быть использованы для декларативного отображения данных.

Примечание

На самом деле в приведенном ранее списке присутствует немного лукавства, поскольку, по большому счету, генерация представлений в конечном итоге основывается на создании компилируемого управляющего кода.

Рассмотрим каждый из подходов подробно на практическом примере, и по мере изложения материала будем создавать работающее демонстрационное приложение, использующее разобранные ранее возможности.

*****************************************

Вложенный управляющий код

Рассмотрим простейший пример — в представлении необходимо вывести таблицу, содержащую набор записей, переданных контроллером через коллекцию viewData. В качестве источника данных используется ставшая уже стандартом де-факто для примеров база данных Northwind, для доступа к которой используется LINQ для SQL, подробно описанный в главе 3.

В примере мы будем работать с классом Customer, упрощенное представление которого приведено в листинге 5.5.

Листинг 5.5. Класс Customer

public class Customer {

public string CustomerlD {get; set;}

public string CompanyName {get; set;}

public string ContactName {get; set;}

public string ContactTitle {get; set;}

public string Address {get; set;}

public string City {get; set;}

public string Region {get; set;}

public string PostalCode {get; set;}

public string Country {get; set;}

public string Phone {get; set;}

public string Fax {get; set;}

public EntitySet<CustomerCustomerDemo>

CustomerCustomerDemos {get; set;}

public EntitySet<Order> Orders {get; set;}

}

Данные передаются контроллером HomeController представлению Index.aspx через коллекцию viewData в качестве перечислимой коллекции, возвращаемой вспомогательным методом-оберткой над стандартными классами, созданными LINQ для SQL. Код, отвечающий непосредственно за получение данных, не представляет интереса для целей этого примера и не приводится.

public ActionResult Index

{

NorthwindDatabase db = new NorthwindDatabase;

ViewData["Message"] = "Список сотрудников";

ViewData["Customers"] =

db.GetCustomers(c => c.CompanyName, 5);

return View ;

}

В результате представлению Index.aspx будет передана коллекция объектов типа Customer, которую требуется представить в виде таблицы. С использованием управляющего кода разметка представления может выглядеть так, как показано в листинге 5.6.

  • Читать дальше
  • 1
  • ...
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • ...

UR.ANUS - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • support@anus.bid