web-dev-qa-db-fra.com

Quel est l'intérêt de Html.DisplayTextFor ()?

Y a-t-il une bonne raison d'utiliser l'assistant html fortement typé ...

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

Par opposition à ...

<%: Model.Email %> 
47
Sean Cain

Considérez le modèle suivant:

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

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

}

à mon avis:

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

<%: Model.Email %>

La première ligne affichera "Aucune valeur disponible" si nous laissons l'e-mail à "null" alors que la deuxième ligne n'affichera rien.

Conclusion: Html.DisplayTextFor prendra en considération les DataAnnotations sur vos propriétés, <%: Model.Email %> Ne fera pas. Aussi <%: Model.Email %> générera une "erreur de référence d'objet" lorsque la valeur est nulle, mais <%= Html.DisplayTextFor %> pas.

74
Yngve B-Nilsen

DisplayTextFor sera également appelé lors de l'exécution de "DisplayFor" et "EditFor". Cela garantira que tous les assistants basés sur des modèles afficheront le texte en utilisant les bons assistants basés sur des modèles s'ils sont définis ... donc une modification de l'assistant de modèles unique se propagera à travers tous les affichages de cet élément de texte ... affichage simple, modifier le formulaire, créer des formulaires, etc. etc.

6
JcMaltaDev

Eh bien, DisplayTextFor ne se cassera pas si vous ne passez pas dans un modèle (ou passez null). Model.Email lèvera une exception sur null. Ainsi, DisplayTextFor est plus robuste.

Le but des assistants fortement typés est de permettre une plus grande vérification du temps de compilation. C'est très pratique lors de la refactorisation.

DisplayTextFor permet d'utiliser une construction cohérente (avec les autres assistants fortement typés) sur toute la page. Certaines personnes pourraient trouver cela plus attrayant.

DisplayTextFor vous permet également de transmettre les noms des modèles et des champs en tant que paramètres.

5
Justin