我有一个Razor视图
@Html.DisplayFor(modelItem => item.TotalTime)
,TotalTime的类型是TimeSpan。
它的作用很大问题是我们现在发现了一些总时间超过24小时的情况,因此显示为1.01:00:00(1天,1Hr,00Mins,00秒)。所以价值仍然正确,但我需要它显示为25:00:00(25小时,00分钟,00秒)。
我可以将模型更改为字符串,但它在各种地方使用,包括公式等,所以这不是一个简单的任务,因此我只想更改值的显示。
我已经四处寻找DisplayFor的数据注释,但找不到一个可以工作的数据注释,所以我愿意接受建议
由于
悬崖。
答案 0 :(得分:1)
您需要从单独的部分计算小时数和小时数。
这是一个帮助扩展:
public static HtmlString TimeSpanString(this HtmlHelper helper, TimeSpan val)
{
double days = val.Days;
double hours = val.Hours + (days * 24);
double minutes = val.Minutes;
double seconds = val.Seconds;
var formattedString = String.Format("{0:00}:{1:00}:{2:00}", hours, minutes, seconds);
return new HtmlString("<span>" + formattedString + "</span>");
}
用法:
@Html.TimeSpanString(item.TotalTime)
答案 1 :(得分:1)
好的,正如上面Jim Crandell所建议的,我添加了一个显示模板,如下所示:
Views\Shared\DisplayTemplates\TimeSpan.cshtml (I created a new folder and a partial view)
在这个新的局部视图中,我添加了:
@model TimeSpan
@string.Format("{0}:{1}:{2}",(Model.Days *24) + Model.Hours, Model.Minutes, Model.Seconds)
它的确有效,谢谢你们......