我有 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>
我得到这个编译格式异常错误:
输入字符串的格式不正确。--> "@Html.DisplayFor(modelItem => item.Ticket.Duration)"
System.FormatException 未被用户代码处理
HResult=-2146233033 消息=输入字符串的格式不正确。源=mscorlib
我已经成功地为 EditViews 创建了 DateTime 模板,但我似乎无法在 DisplayFor 上使用 TimeSpan 类型解决这个问题。
我不知道我在做什么,所以任何线索都值得赞赏!:) 提前致谢!