Шаблонные хелперы

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

Кроме стандартных html-хелперов, рассмотренных в прошлой главе и генерирующих определенные элементы разметки html, фреймворк MVC также имеет шаблонные (также называют шаблонизированные) хелперы. Зачем они нужны? Они более гибки по сравнению с html-хелперами, так как в этом случае нам не надо думать, какой нам надо создать элемент разметки и какой для этого выбрать хелпер. Мы просто сообщаем шаблонному хелперу, какое свойство модели мы хотим использовать, а фреймворк уже сам выбирает, какой html-элемент сгенерировать, исходя из типа свойства и его метаданных.

Шаблонные хелперы:

  • Display

    Создает элемент разметки, который доступен только для чтения, для указанного свойства модели: Html.Display("Name")

  • DisplayFor

    Строго типизированный аналог хелпера Display: Html.DisplayFor(e => e.Name)

  • Editor

    Создает элемент разметки, который доступен для редактирования, для указанного свойства модели: Html.Editor("Name")

  • EditorFor

    Строго типизированный аналог хелпера Editor: Html.EditorFor(e => e.Name)

  • DisplayText

    Создает выражение для указанного свойства модели в виде простой строки: Html.DisplayText("Name")

  • DisplayTextFor

    Строго типизированный аналог хелпера DisplayText: Html.DisplayTextFor(e => e.Name)

Кроме данных шаблонов, которые используются для отдельного свойства модели, есть еще несколько шаблонов, которые позволяют сгенерировать разом все поля для определенной модели:

  • DisplayForModel

    Создает поля для чтения для всех свойств модели: Html.DisplayForModel()

  • EditorForModel

    Создает поля для редактирования для всех свойств модели: Html.EditorForModel()

Например, определим в контроллере некоторое действие BookView, которое по id будет выводить информацию об определенной книге:

public ActionResult BookView(int id)
{
    var book = _db.Books.Find(id);
    if (book != null)
    {
        return View(book);
    }
    return RedirectToAction("Index");
}

Теперь создадим представление BookView.cshtml, в котором все поля генерируются одним хелпером:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@model BookStore.Models.Book

<h2>Книга № @Model.Id</h2>
@Html.DisplayForModel()

И обратимся к этому ресурсу, набрав в адресной строке браузера Home/BookView/1:

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850