我可以将剃刀代码减少到几行吗?

时间:2011-02-17 13:27:39

标签: c# visual-studio-2010 asp.net-mvc-3 razor

我可以减少这个剃刀代码吗?

    <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 个答案:

答案 0 :(得分:24)

您可以使用[DisplayFormat]属性修饰视图模型属性:

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

然后你的观点就变成了:

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

所以现在它被简化为一条优雅的线条。

答案 1 :(得分:0)

我假设您可以使用?: operator来缩短它。如果这是一个好主意是一个不同的问题。

您可能不希望使用new System.Globalization.CultureInfo("fr-FR")对区域设置进行硬编码,而是使用来自变量或线程当前区域设置的区域设置。