Есть ли серьезное основание использовать помощника HTML со строгим контролем типов...
<%: Html.DisplayTextFor(model => model.Email) %>
В противоположность...
<%: Model.Email %>
Рассмотрим следующую модель:
public class MyModel
{
public string Name { get; set; }
[DisplayFormat(NullDisplayText = "No value available!")]
public string Email { get; set; }
}
на мой взгляд:
<%= Html.DisplayTextFor(m => m.Email) %>
<%: Model.Email %>
В первой строке будет выведено "Нет доступного значения", если оставить Email равным 'null', тогда как во второй строке не будет выведено ничего.
Вывод:
Html.DisplayTextFor будет учитывать DataAnnotations на ваших свойствах, <%: Model.Email %>
не будет.
Также <%: Model.Email %>
выбросит ошибку "Object reference error", если значение равно null, а <%= Html.DisplayTextFor %>
- нет.
DisplayTextFor также будет вызываться во время выполнения «DisplayFor» и «EditFor». Это гарантирует, что любые шаблонные помощники будут отображать текст с использованием правильных шаблонных помощников, если они установлены ... так что изменение одного шаблонного помощника будет распространяться на все отображения этого текстового элемента ... простое отображение, редактирование формы, создание форм и т. Д. и т. д.
Что ж, DisplayTextFor не сломается, если вы не передадите модель (или передадите null). Model.Email выдаст исключение при нулевом значении. Итак, DisplayTextFor более надежен.
Смысл строго типизированных помощников состоит в том, чтобы увеличить время проверки компиляции. Это очень удобно при рефакторинге.
DisplayTextFor позволяет использовать согласованную конструкцию (с другими строго типизированными помощниками) по всей странице. Некоторым это может показаться более привлекательным.
DisplayTextFor также позволяет передавать имена шаблонов и полей в качестве параметров.