2011-02-17 4 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> 

これで、1つのエレガントなラインになりました。

+2

+1 - 私はこの属性について知らなかった!ありがとう! –

+0

私はそれを愛し、本当に賢い! –

+0

カルチャー情報が失われます。とにかくどこかに置かれるはずです。 –

0

?: operatorを使用して短縮するとします。それが良い考えであれば、別の質問です。

おそらく、new System.Globalization.CultureInfo("fr-FR")でロケールをハードコードしたくないかもしれませんが、変数または現在のスレッドのロケールからロケールを使用してください。

+0

現在のサーバーカルチャを使用すると思います –

関連する問題