Nếu tôi có trong lớp mô hình của mình một thuộc tính kiểu, DateTime
là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ù val
chứ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
ToLongDateString
chỉ là một ví dụ. Những gì tôi thực sự muốn sử dụng thay vì ToLongDateString
là một phương pháp mở rộng tùy chỉnh của DateTime
và 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 DisplayFormat
thuộc tính và DataFormatString
tham số trên thuộc tính ViewModel.