C# 将时间跨度格式化为总毫秒

C# 将时间跨度格式化为总毫秒,c#,.net,datetime,string-formatting,timespan,C#,.net,Datetime,String Formatting,Timespan,我正在写一个简单的ASP.Net页面,其中有几个字段,其中一个是超时字段。我希望将其显示为毫秒(但仍然希望使用timespan而不是int/string)。我正在编写以下代码: <input asp-for="Entry.Interval" asp-format="{0:fff}" type="text" class="form-control"> 但这里有一个问题。此格式未按预期工作。我希望TimeSpan.frommins(2).ToString(“fff”)返回1200

我正在写一个简单的ASP.Net页面,其中有几个字段,其中一个是超时字段。我希望将其显示为毫秒(但仍然希望使用timespan而不是int/string)。我正在编写以下代码:

<input asp-for="Entry.Interval" asp-format="{0:fff}" type="text" class="form-control"> 

但这里有一个问题。此格式未按预期工作。我希望
TimeSpan.frommins(2).ToString(“fff”)
返回
120000
,但它返回
000
。这显然是因为
TimeSpan
使用
millizes
属性,在本例中为零,但我需要
totalmillizes


是否有某种格式强制以所需的单位显示整个
TimeSpan
?我真的不想写一个整型字段并在这个
TimeSpan

上手动映射它。您可以定义另一个只在绑定中使用的属性

class Entry
{
    public TimeSpan Interval { get; set; }
    public int IntervalMS
    {
        get { return (int)Interval.TotalMilliseconds; }
        set { Interval = TimeSpan.FromMilliseconds(value); }
    }
    //other stuff...
}
然后

<input asp-for="Entry.IntervalMs" type="text" class="form-control"> 


ToString(“fff”)将返回整个
TimeSpan
格式为“fff”,即帧/毫秒到3个字符。同样,如果你打印“ss”,你会得到2个字符的秒数。你说你需要
totalmillizes
——这是正确的,可以给你
120000
作为
double
。我不知道你在哪里挣扎?您想要的输出是什么?@GeoffJames当您指定要绑定的值时,您不能调用propertyies或方法。当我编写
asp for=“Entry.Interval”
时,它从中获取一个值,然后应用
格式
并进行渲染。然后,在提交时,按相反顺序执行,解析值并返回最终结果。我不能使用
totalmillizes
,因为在这种情况下,它将正确地呈现值,但无法在回发时对其进行分析。我明白了,所以您希望在页面上显示
Entry.Interval
(2分钟)作为
120000
?什么类型是
条目。间隔
<代码>时间跨度?传递给回发方法的值是多少?你能在你的问题中贴出你的回帖方法吗?我明白了。我同意,我认为唯一的方法是使用一个单独的属性作为下面的答案。快乐编码:)您缺少一个强制转换,
totalmillizes
返回
double
而不是
int