Можно ли сократить код бритвы до нескольких строк? - PullRequest
8 голосов
/ 17 февраля 2011

Можно ли уменьшить этот код бритвы?

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

Я пробовал это, но это не работает:

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

Ответы [ 2 ]

24 голосов
/ 17 февраля 2011

Вы можете украсить свойство модели представления с помощью атрибута [DisplayFormat]:

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

и тогда ваше мнение просто становится:

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

Так что теперь оно сводится к одной элегантной линии.

0 голосов
/ 17 февраля 2011

Полагаю, вы можете использовать оператор ?: для его сокращения.Если это хорошая идея, это другой вопрос.

И вы, вероятно, не хотите жестко кодировать локаль с помощью new System.Globalization.CultureInfo("fr-FR"), а использовать локаль из переменной или текущей локали потока.

...