3

model.EndDateのときに空の文字列を表示しようとしています0

@Html.DisplayFor(modelItem => model.EndDate)

私は試した

@Html.DisplayFor(modelItem => model.EndDate == 0 ? "" : model.EndDate.ToString())

@Html.Display("End Date",model.EndDate == 0 ? "" : model.EndDate.ToString())

どちらも私にとってはうまくいきませんでした。データが利用可能な場合、表示は両方とも空です。

4

5 に答える 5

0

asp.net で datetime を 0 と比較することはできません。

error CS0019: Operator `==' cannot be applied to operands of type `System.DateTime' and `int'

DateTime は値型であるため、設定されていない場合は DateTime.MinValue の既定値を取得します。

using System;
public class Test {
    public static DateTime badDate;
    public static DateTime goodDate = DateTime.Now; 
    public static void Main(string[] args) {
        Console.WriteLine(goodDate == DateTime.MinValue ? "" : goodDate.ToString());
        Console.WriteLine(badDate == DateTime.MinValue ? "" : badDate.ToString());
    }
}
于 2013-07-10T16:58:07.350 に答える
0

これはどう ?

DateTime dt;
if (DateTime.TryParse("Your Date", out dt))
{
    //Now you have validated the date
    //Your code goes here
}
于 2013-07-10T17:01:50.023 に答える
0

モデル プロパティを null 許容型にする必要があると思います。たとえば、型が DateTime の場合、プロパティを null 許容の DateTime として宣言します。

public DateTime? EndDate { get; set; }

この方法では、0 の日付 (それが何を意味するにせよ) の代わりに、値がなくなります。これは、特にこのモデル プロパティがデータベースから取得され、null 許容である場合にも意味があります。

null 許容型の詳細については、http://msdn.microsoft.com/en-us/library/2cf62fcy(v=vs.80).aspx を参照してください。

于 2013-07-10T16:59:53.613 に答える