2014-03-31 53 views
1

好吧,我有一個Client對象,其中有一個可空的datetime屬性爲「DateOfBirth」 因此,從UI,我們不介意是否輸入日期,但是im問題是顯示時未來的客戶,我想格式化像這樣ASP.NET MVC可空日期時間

@client.DateOfBirth.ToString("dd-MMM-yyyy") 

日期時間,但問題是,它可能返回null(從我不想顯示任何東西),我該如何處理這個問題,從UI?

回答

3

您可以檢查它是否顯示它之前是空:

@(client.DateOfBirth != null ? client.DateOfBirth.ToString("dd-MMM-yyyy") : "Not Selected") 

您也可以在代碼複用一個靜態類包裝這樣的:調用toString前

@if(client.DateOfBirth.HasValue) 
{ 
    @client.DateOfBirth.ToString("dd-MMM-yyyy") 
} 
+0

一旦你在一個代碼塊中,你不需要第二個'at-sign'(即@ client.Date ...)。請參閱[C#Razor語法快速參考](http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/)。 –

1

檢查空:

public static class Utils { 
    public static string FriendlyDate(DateTime? value) { 
     if(value == null) return "Not Selected"; 
     return value.ToString("dd-MMM-yyyy") 
    } 
} 

而在你的視野:

@Utils.FriendlyDate(client.DateOfBirth) 
0

我對此的解決方案是通過視圖模型將日期(在我的情況下是出生日期)作爲字符串公開,並使用.AsDateTime()將其重新轉換爲DateTime

private DateTime _dateOfBirth; 
[Required(ErrorMessage = "Please enter a date of birth. ")] 
public String DateOfBirth { 
    get { return (_dateOfBirth.ToShortDateString() == DateTime.MinValue.ToShortDateString()) ? null : _dateOfBirth.ToShortDateString(); } 
    set { _dateOfBirth = value.AsDateTime(); } 
}