Кроме базовых html-хелперов, рассмотренных в прошлой главе и генерирующих определенные элементы разметки html, фреймворк ASP.NET MVC также имеет шаблонные (или шаблонизированные) хелперы. В отличие от рассмотренных в прошлой главе html-хелперов они не генерируют определенный элемент html. Шаблонные хелперы смотрят на свойство модели и генерируют тот элемент html, который наиболее подходит данному свойству, исходя из его типа и метаданных.
В ASP.NET MVC имеются следующие шаблонные хелперы:
- Display
Создает элемент разметки для отображения значения указанного свойства модели:
Html.Display("Name")
- DisplayFor
Строго типизированный аналог хелпера Display:
Html.DisplayFor(m => m.Name)
- Editor
Создает элемент разметки для редактирования указанного свойства модели:
Html.Editor("Name")
- EditorFor
Строго типизированный аналог хелпера Editor:
Html.EditorFor(m => m.Name)
- DisplayText
Создает выражение для указанного свойства модели в виде простой строки:
Html.DisplayText("Name")
- DisplayTextFor
Строго типизированный аналог хелпера DisplayText:
Html.DisplayTextFor(m => m.Name)
Это были одиночные хелперы, которые генерируют разметку только для одного свойства модели. Но кроме них во фреймворке также есть еще несколько шаблонов, которые позволяют создать разом все поля для всех свойств модели:
- DisplayForModel
Создает поля для чтения для всех свойств модели:
Html.DisplayForModel()
- EditorForModel
Создает поля для редактирования для всех свойств модели:
Html.EditorForModel()
Напишем такой контроллер
1 2 3 4 5 6 |
public ActionResult ShowModel(int id) { BookContext db = new BookContext(); var book = db.Books.Where(b => b.Id == id).FirstOrDefault(); return View(book); } |
И создадим такое представление
1 2 3 4 5 6 7 8 |
@model modelsTraining2.Models.Book @{ ViewBag.Title = "ShowModel"; } <h2>ShowModel</h2> @Html.DisplayForModel() |
В результате получим