2011-02-17 14 views
8

posso ridurre questo codice rasoio?posso ridurre il codice di rasoio per solo poche righe?

<li> 
    @{ 
     if (@Model.PublicationDate.HasValue) { 
      @Model.PublicationDate.Value.ToString("D", new System.Globalization.CultureInfo("fr-FR")) 
     } 
     else { 
      @:"pas disponible" 
     } 
    } 
    </li> 

Stavo cercando questo, ma non funziona:

@{(@Model.PublicationDate.HasValue) ? (@Model.PublicationDate.Value.ToString("D")) : (@:"pas disponible")} 

risposta

24

Si potrebbe decorare la vostra proprietà vista del modello con l'attributo [DisplayFormat]:

[DisplayFormat(DataFormatString = "{0:D}", NullDisplayText = "pas disponible")] 
public DateTime? PublicationDate { get; set; } 

e quindi la visualizzazione diventa semplicemente :

<li> 
    @Html.DisplayFor(x => x.PublicationDate) 
</li> 

Così ora è ridotta a una linea singola ed elegante.

+2

1 - Non sapevo di questo attributo! Grazie! –

+0

Mi piace, davvero intelligente! –

+0

Perdete le informazioni sulla cultura. Quale dovrebbe probabilmente essere disposto in qualche luogo elese in ogni caso. –

0

presumo si può usare il ?: operator per accorciarlo. Se questa è una buona idea è una domanda diversa.

E probabilmente non si desidera codificare le impostazioni internazionali con new System.Globalization.CultureInfo("fr-FR") ma utilizzare le impostazioni locali da una variabile o dalle impostazioni internazionali correnti del thread.

+0

Sto pensando di utilizzare l'attuale cultura del server –

Problemi correlati