Подтвердить что ты не робот

Какая точка Html.DisplayTextFor()?

Есть ли веская причина использовать строго типизированный html-помощник...

<%: Html.DisplayTextFor(model => model.Email) %>

В отличие от...

<%: Model.Email %> 
4b9b3361

Ответ 1

Рассмотрим следующую модель:

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 %>

В первой строке отобразится "Нет значения", если мы оставим сообщение "null", а вторая строка ничего не отобразит.

Вывод: Html.DisplayTextFor учитывает DataAnnotations для ваших свойств, <%: Model.Email %> не будет. Кроме того, <%: Model.Email %> будет вызывать "ошибку ссылки объекта", когда значение равно null, но <%= Html.DisplayTextFor %> не будет.

Ответ 2

DisplayTextFor также будет вызван во время исполнения "DisplayFor" и "EditFor". Это гарантирует, что любые шаблонные помощники будут отображать текст с помощью правильных шаблонных помощников, если они установлены... поэтому изменение одного шаблонного помощника будет распространяться через все дисплеи этого текстового элемента... простой дисплей, редактировать форму, создавать формы и т.д. и др.

Ответ 3

Ну, DisplayTextFor не сломается, если вы не пройдете в модели (или не пройдете null). Model.Email выдает исключение в null. Таким образом, DisplayTextFor является более надежным.

Точка строго типизированных помощников позволяет увеличить время проверки компиляции. Это очень удобно при рефакторинге.

DisplayTextFor позволяет использовать согласованную конструкцию (с другими сильно типизированными помощниками) на всей странице. Некоторые люди могут найти это более привлекательным.

DisplayTextFor также позволяет передавать имена шаблонов и полей в качестве параметров.