Книга: ASP.NET MVC Framework

Шаблонные помощники

Шаблонные помощники (templated helpers) — это новое средство в MVC 2, которое призвано сократить время разработки представлений. Шаблонные помощники строго типизированы и основаны на моделях приложения, кроме того, для вывода информации и валидации модели используется механизм DataAnnotations. В общем, шаблонных помощников можно представить себе как генератор разметки на базе определенной модели и правил, указанных с помощью атрибутов DataAnnotations.

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

Для примера рассмотрим следующую модель данных:

public class Product
{
  public int Id { get; set; }
  public string Name { get; set; }
  public string Description { get; set; }
  public decimal Cost { get; set; }
  public DateTime UpdatedAt { get; set; }
}

Класс Product представляет собой модель продукта для некого магазина. Модель содержит идентификатор, название, описание, стоимость и дату обновления.

Механизм шаблонных помощников устроен так, что позволяет отображать разметку для модели всего одной строчкой кода. Например, создадим контроллер StoreController и строготипизированное представление Info, основанное на Product, которое отображает информацию о продукте (листинг 9.2).

Листинг 9.2. Представление с использованием шаблонных помощников

<%@ Page Title="" Language="C#"
    MasterPageFile="~/Views/Shared/Site.Master"
    Inherits="System.Web.Mvc.ViewPage<TemplatedHelpersProject.Models.Product> " %>
<asp:Content ContentPlaceHolderID="TitleContent"
      runat="server">
  Информация о продукте
</asp:Content>
<asp:Content ContentPlaceHolderID="MainContent"
      runat="server">
  <h2>Info</h2>
  <%= Html.DisplayFor(x => Model)%>
</asp:Content>

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

Код контроллера StoreController для примера будет таким, как в листинге 9.3.

Листинг 9.3. Контроллер StoreController

namespace TemplatedHelpersProject.Controllers
{
  using System;
  using System.Web.Mvc;
  using TemplatedHelpersProj ect.Models;
  public class StoreController : Controller
  {
    public ActionResult Info()
    {
      var product = new Product() { Cost = 1,
           Description = "Описание",
           Id = 1, Name = "Товар",
           UpdatedAt = DateTime.Now };
      return View(product);
    }
  }

}

Запустим приложение на выполнение и перейдем на представление Store/Info. Результатом будет полная информация, заведенная нами в экземпляре Product (рис. 9.6).


Как вы можете увидеть, написав всего одну строчку кода в представлении, мы сформировали разметку для целой комплексной модели данных.

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


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