TimeSpan 値 (期間) を次の形式で表示する DisplayFor があります: 35.04:08:43.2470000 (dd.HH:mm:ss.fffffff)。
私の目標は、人間が読める文字列「HH:mm」であるため、MVC Razor で TimeSpan を表示する方法に従い、~views/Shared/TimeSpanTemplate.cshtml で DisplayTemplate を作成してみました。
@model TimeSpan
@{
TimeSpan initialValue = Model;
}
@string.Format("{0}:{1}", (initialValue.Days * 24) + initialValue.Hours, initialValue.Minutes)
@Scripts.Render("~/bundles/bootstrap")
これは私のモデルです:
[DisplayFormat(DataFormatString = "{0:HH:mm}", ApplyFormatInEditMode = true)]
[DisplayName("Varighed")]
public virtual TimeSpan? Duration
{
get {
return SolvedDate.HasValue ? (TimeSpan?)SolvedDate.Value.Subtract(ReportedDate) : null; }
}
これは私の見解です:
<td>
@Html.DisplayFor(modelItem => item.Ticket.Duration)
</td>
次のコンパイル formatexception エラーが発生します。
入力文字列は、正しい形式ではありませんでした。--> "@Html.DisplayFor(modelItem => item.Ticket.Duration)"
System.FormatException はユーザー コードによって処理され
ませんでした。HResult=-2146233033 Message=入力文字列が正しい形式ではありませんでした。ソース= mscorlib
EditViews の DateTime テンプレートを正常に作成しましたが、TimeSpan タイプの DisplayFor でこの問題を回避できないようです。
私は自分が何をしているのか全くわからないので、手がかりをいただければ幸いです! :) 前もって感謝します!