[英]Formatting TimeSpan - MVC C# Razor DisplayFor
我有DisplayFor以以下格式顯示TimeSpan值(持續時間):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消息=輸入字符串的格式不正確。 來源= mscorlib
我已經成功地為EditViews創建了DateTime模板,但是我似乎無法在具有TimeSpan類型的DisplayFor上解決此問題。
我不知道我在做什么,所以任何線索都值得贊賞! :) 提前致謝!
這不是解決此問題的直接答案,但我認為使用Humanizer庫會更好。
您將可以執行以下操作:
SolvedDate.Humanize();
看到這里: https : //github.com/Humanizr/Humanizer#humanize-timespan
您的時間跨度可以為空,因此請嘗試:
<td>
@Html.Label("MyTimeSpan", Model.Ticket.Duration != null ? Model.Ticket.Duration.Value : string.Empty)
</td>
閱讀完后如何在.NET中使用自定義格式對TimeSpan對象進行String.Format格式化?
我設法解決了自己的問題,方法是對我的TimeSpanTemplate進行了注釋,然后只需在模型中通過以下方式編輯此行: [DisplayFormat(DataFormatString = "{0:HH:mm}", ApplyFormatInEditMode = true)]
至
[DisplayFormat(DataFormatString = "{0:%d}d {0:%h}h {0:%m}m {0:%s}s", ApplyFormatInEditMode = true)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.