Nếu tôi có trong lớp mô hình của mình một thuộc tính kiểu, DateTimelàm cách nào tôi có thể hiển thị nó ở một định dạng cụ thể - ví dụ: trong định dạng ToLongDateString()trả về?
Tôi đã thử cái này ...
@Html.DisplayFor(modelItem => item.MyDateTime.ToLongDateString())
... mà ném ra một ngoại lệ vì biểu thức phải trỏ đến một thuộc tính hoặc trường. Và điều này...
@{var val = item.MyDateTime.ToLongDateString();
Html.DisplayFor(modelItem => val);
}
... mà không ném ra một ngoại lệ, nhưng đầu ra được kết xuất là trống (mặc dù valchứa giá trị mong đợi, như tôi có thể thấy trong trình gỡ lỗi).
Cảm ơn các mẹo trước!
Biên tập
ToLongDateStringchỉ là một ví dụ. Những gì tôi thực sự muốn sử dụng thay vì ToLongDateStringlà một phương pháp mở rộng tùy chỉnh của DateTimevà DateTime?:
public static string FormatDateTimeHideMidNight(this DateTime dateTime)
{
if (dateTime.TimeOfDay == TimeSpan.Zero)
return dateTime.ToString("d");
else
return dateTime.ToString("g");
}
public static string FormatDateTimeHideMidNight(this DateTime? dateTime)
{
if (dateTime.HasValue)
return dateTime.Value.FormatDateTimeHideMidNight();
else
return "";
}
Vì vậy, tôi nghĩ rằng tôi không thể sử dụng DisplayFormatthuộc tính và DataFormatStringtham số trên thuộc tính ViewModel.