2011-02-17 4 views
8

Czy mogę zmniejszyć ten kod brzytwy?Czy mogę zmniejszyć kod brzytwy do kilku linii?

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

próbowałem tego, ale to nie działa:

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

Odpowiedz

24

Można ozdobić swoją nieruchomość widok modelu z atrybutem [DisplayFormat]:

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

i wtedy twój widok staje się po prostu :

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

Teraz jest zredukowany do pojedynczej i eleganckiej linii.

+2

+1 - Nie wiedziałem o tym atrybucie! Dzięki! –

+0

Uwielbiam to, naprawdę sprytne! –

+0

Tracisz informacje o kulturze. Który prawdopodobnie powinien być umieszczony gdzieś w elese. –

0

Zakładam, że możesz użyć ?: operator, aby go skrócić. Jeśli to dobry pomysł, to inne pytanie.

Prawdopodobnie nie chcesz twardo kodować ustawień narodowych za pomocą new System.Globalization.CultureInfo("fr-FR"), ale użyj ustawień narodowych ze zmiennej lub bieżących ustawień narodowych wątku.

+0

Zamierzam użyć aktualnej kultury serwera –