2011-02-17 85 views
8

我可以減少這個剃鬚刀代碼嗎?我可以將剃鬚刀代碼減少到幾行嗎?

<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")} 

回答

24

您可以與[DisplayFormat]屬性裝飾你的視圖模型屬性:

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

,然後你的看法變得簡單:

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

所以現在它被簡化爲一條優雅的線條。

+2

+1 - 我不知道這個屬性!謝謝! – 2011-02-17 13:34:28

+0

我喜歡它,真的很聰明! – 2011-02-17 13:37:06

0

我假設你可以使用?: operator來縮短它。如果這是一個好主意是一個不同的問題。

而且您可能不想用new System.Globalization.CultureInfo("fr-FR")對區域設置進行硬編碼,但可以使用線程的變量或當前語言環境的區域設置。

相關問題