繁体   English   中英

C#MVC Razor显示一个时间跨度的总小时数

[英]C# MVC Razor Display total hours of a Timespan

我有一个剃刀视图

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

而TotalTime的类型是TimeSpan。

它的工作原理很棘手,因为我们发现一些情况下TotalTime超过24小时,因此显示为1.01:00:00(1天,1小时,00分钟,00秒)。 因此该值仍然正确,但我需要将其显示为25:00:00(25小时,00分钟,00秒)。

我可以将模型更改为字符串,但是它在包括公式等在内的许多地方都使用过,所以这不是一个简单的任务,因此我希望仅更改值的显示。

我到处寻找DisplayFor的数据注释,但找不到可以使用的数据注释,因此我乐于接受建议

谢谢

悬崖。

您需要采用单独的部分,从“天数”和“小时数”部分中计算小时数。

这是一个辅助扩展:

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)

好的,正如上述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)

它的工作原理是,谢谢大家……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM