Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core
Кроме стандартных 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: