C#MVC Razor显示Timespan的总小时数

时间:2015-02-12 20:02:50

标签: c# razor model-view-controller timespan

我有一个Razor视图

@Html.DisplayFor(modelItem => item.TotalTime)

,TotalTime的类型是TimeSpan。

它的作用很大问题是我们现在发现了一些总时间超过24小时的情况,因此显示为1.01:00:00(1天,1Hr,00Mins,00秒)。所以价值仍然正确,但我需要它显示为25:00:00(25小时,00分钟,00秒)。

我可以将模型更改为字符串,但它在各种地方使用,包括公式等,所以这不是一个简单的任务,因此我只想更改值的显示。

我已经四处寻找DisplayFor的数据注释,但找不到一个可以工作的数据注释,所以我愿意接受建议

由于

悬崖。

2 个答案:

答案 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)

它的确有效,谢谢你们......