Какой смысл HTML. DisplayTextFor ()?

Есть ли серьезное основание использовать помощника HTML со строгим контролем типов...

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

В противоположность...

<%: Model.Email %> 
47
задан Sean Cain 13 August 2010 в 03:16
поделиться

3 ответа

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

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 %> - нет.

74
ответ дан 26 November 2019 в 19:41
поделиться

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

6
ответ дан 26 November 2019 в 19:41
поделиться

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

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

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

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

5
ответ дан 26 November 2019 в 19:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: