好吧,我有一個Client對象,其中有一個可空的datetime屬性爲「DateOfBirth」 因此,從UI,我們不介意是否輸入日期,但是im問題是顯示時未來的客戶,我想格式化像這樣ASP.NET MVC可空日期時間
@client.DateOfBirth.ToString("dd-MMM-yyyy")
日期時間,但問題是,它可能返回null(從我不想顯示任何東西),我該如何處理這個問題,從UI?
好吧,我有一個Client對象,其中有一個可空的datetime屬性爲「DateOfBirth」 因此,從UI,我們不介意是否輸入日期,但是im問題是顯示時未來的客戶,我想格式化像這樣ASP.NET MVC可空日期時間
@client.DateOfBirth.ToString("dd-MMM-yyyy")
日期時間,但問題是,它可能返回null(從我不想顯示任何東西),我該如何處理這個問題,從UI?
您可以檢查它是否顯示它之前是空:
@(client.DateOfBirth != null ? client.DateOfBirth.ToString("dd-MMM-yyyy") : "Not Selected")
您也可以在代碼複用一個靜態類包裝這樣的:調用toString前
@if(client.DateOfBirth.HasValue)
{
@client.DateOfBirth.ToString("dd-MMM-yyyy")
}
檢查空:
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)
我對此的解決方案是通過視圖模型將日期(在我的情況下是出生日期)作爲字符串公開,並使用.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(); }
}
一旦你在一個代碼塊中,你不需要第二個'at-sign'(即@ client.Date ...)。請參閱[C#Razor語法快速參考](http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/)。 –