2010-08-13 15 views

risposta

70

si consideri il seguente modello:

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

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

} 

a mio avviso:

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

<%: Model.Email %> 

la prima linea visualizza "Nessun valore disponibile" se lasciamo l'e-mail a essere 'nulla', mentre la seconda riga non mostrerà nulla.

Conclusione: Html.DisplayTextPer prendere in considerazione le NoteAnnotazioni sulle proprietà, <%: Model.Email %> no. Anche <%: Model.Email %> genererà un "Errore di riferimento oggetto" quando il valore è nullo, ma non lo sarà <%= Html.DisplayTextFor %>.

5

Beh, DisplayTextFor non si rompe se non si passa in un model (o passa null). Model.Email genererà un'eccezione su null. Quindi, DisplayTextFor è più robusto.

Il punto degli helper fortemente tipizzati è quello di consentire un maggior controllo del tempo di compilazione. Questo è molto utile durante il refactoring.

DisplayTextFor consente di utilizzare un costrutto consistente (con gli altri helper fortemente tipizzati) in tutta la pagina. Alcune persone potrebbero trovare più attraente.

DisplayTextPer inoltre consente di passare i nomi di modelli e campi come parametri.

6

DisplayTextPer ricevere chiamate anche durante l'esecuzione "DisplayFor" e "EditFor". Ciò assicurerà che tutti gli helper con modelli mostreranno il testo usando gli helper Template corretti se impostato ... quindi una modifica all'helper singolo basato su modelli si propagherà attraverso tutte le visualizzazioni di quell'elemento testo ... visualizzazione semplice, modifica modulo, creazione di moduli, ecc. ecc

+0

Quindi stai dicendo che è un po 'come .ToString() per la proprietà del modello? Se è così, potrei vedere che essere utile se la proprietà del modello fosse un tipo complesso. –