2010-08-13 14 views

Odpowiedz

70

Rozważmy następujący model:

public class MyModel 
{ 
    public string Name { get; set; } 

    [DisplayFormat(NullDisplayText = "No value available!")] 
    public string Email { get; set; } 

} 

moim zdaniem:

<%= Html.DisplayTextFor(m => m.Email) %> 

<%: Model.Email %> 

w pierwszym wierszu zostanie wyświetlony komunikat „Brak wartości dostępne” jeśli opuścimy Email być „zerowy”, podczas gdy druga linia nic nie wyświetli.

Wniosek: Html.DisplayTextFor weźmie pod uwagę DataAnnotations na swoich właściwościach, <%: Model.Email %> nie będzie. Również <%: Model.Email %> rzuci "Błąd odniesienia do obiektu", gdy wartość jest zerowa, ale <%= Html.DisplayTextFor %> nie będzie.

5

No DisplayTextFor nie złamie, jeśli nie przechodzą w sposób model (lub przekazuje wartość null). Model.Email rzuci wyjątek na wartość null. Tak więc DisplayTextFor jest bardziej niezawodny.

Punktem silnie wpisanych helperów jest umożliwienie większego sprawdzenia czasu kompilacji. Jest to bardzo przydatne przy refaktoryzacji.

DisplayTextFor umożliwia używanie spójnej konstrukcji (z innymi mocno wpisanymi helperami) na całej stronie. Niektóre osoby mogą uznać to za bardziej atrakcyjne.

DisplayTextFor pozwala również przekazywać nazwy szablonów i pól jako parametry.

6

DisplayTextFor będzie również wywoływany podczas wykonywania "DisplayFor" i "EditFor". Zapewni to, że każdy szablonowy pomocnik wyświetli tekst za pomocą poprawnych pomocników szablonów, jeśli zostanie ustawiony ... aby zmiana do pojedynczego szablonu pomocy była wyświetlana we wszystkich wyświetleniach tego elementu tekstowego ... proste wyświetlanie, edycja formularzy, tworzenie formularzy itp. itp

+0

Więc mówisz, że to coś w stylu .ToString() dla właściwości modelu? Jeśli tak, mogłem zobaczyć, że jest to pomocne, jeśli właściwość modelu jest typem złożonym. –