2012-02-15 9 views
0

ASP.NET MVC 3の新機能これは実際には簡単な問題だと思われますが、実際は私を困惑させてしまいました。私がしたいのは、値が入力されている場合は特定のDateTime値を表示し、値が入力されていない場合は空白のままにします。私の見解では、コードは単純に次のようになっています:ASP.NET MVCで表示する項目プロパティを条件付きで表示

<td> 
    @if (item.TimeReturned > DateTime.MinValue) 
    { 
    Html.DisplayFor(modelItem => item.TimeReturned); 
    } 
</td> 

これは本当に基本的で簡単なようです。また、それは過剰なようだが、モデルではTimeReturnedが明示的にデフォルトでDateTime.MinValueになっている。

値は表示されません。オペレーターの不安がないことを確認するだけで、私も試しました。

<td> 
    @if (DateTime.Compare(item.TimeReturned,DateTime.MinValue) != 0) 
    { 
    Html.DisplayFor(modelItem => item.TimeReturned); 
    } 
</td> 

これも何も表示されません。私はいくつかの根本的な洞察を欠いているに違いない私はこれを達成するためにモデルクラスにメソッドを書くことができたと思いますが、このようにするのは直感的です。どんな指導も大歓迎です!

+0

投稿TimeReturnedに移入されたコントローラのコードを次のようにあなたがそれを使用することができます。また、おそらくDateTime.MinValueの代わりにNullable DateTimeを使用する必要があります。その後、あなたはちょうどitem.TimeReturned!= nullを確認することができます – Dismissile

+0

これは、C#datetimeの比較の問題のようで、asp.net mvc 3の問題ではないようです。 '@if(true){Html.DisplayFor(...);}'を設定していればうまくいきます。 –

答えて

1

てみてください、

<td> 
    @if (item.TimeReturned > DateTime.MinValue) 
    { 
    @Html.DisplayFor(modelItem => item.TimeReturned) 
    } 
</td> 
+0

それはうまくいきました、ありがとう! –

+0

@SabrinaStarうれしい! –

+0

将来的にこれに遭遇する人のために、私は '@if ... {'は '@ {'のように別の '@'を必要としない単一のRazorブロックを作るだろうと考えました。これは間違っています; '{'はhtmlとして解釈される** text **ブロックを開始するので、別の '@'はその中のC#文の前に必要です。返事をくれたすべての人に感謝します! –

0

 @if (condetion) 
     { 
      @:@Html.DisplayFor(model => model.property) 
     }