Какой смысл в Html.DisplayTextFor ()? - PullRequest
46 голосов
/ 13 августа 2010

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

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

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

<%: Model.Email %> 

Ответы [ 3 ]

73 голосов
/ 13 августа 2010

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

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

В первой строке будет отображаться «Нет доступных значений», если мы оставим сообщение электронной почты «нулевым»тогда как вторая строка ничего не отобразит.

Вывод: Html.DisplayTextFor примет во внимание DataAnnotations для ваших свойств, <%: Model.Email %> не будет.Также <%: Model.Email %> будет выдавать «Ошибка ссылки на объект», когда значение равно нулю, но <%= Html.DisplayTextFor %> не будет.

6 голосов
/ 13 августа 2010

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

5 голосов
/ 13 августа 2010

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

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

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

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

...