Timespan不接受MVC3中的一天

时间:2012-10-12 09:08:02

标签: c# asp.net-mvc-3 timespan

我有一个MVC3应用程序,其中我想设置一个时间跨度,例如2天和5小时。 当我进入02:05:00:00时,它给了我以下例外:

System.OverflowException: SqlDbType.Time overflow.  Value '2.05:00:00' is out of range.  Must be between 00:00:00.0000000 and 23:59:59.9999999.

当我输入05:00:00时,它正确地将5小时保存到数据库中。根据MSDN timespan有一天属性。我如何正确设置日期?

型号:

public class ProductionTimeVM
{        
    [Required]
    public TimeSpan DefaultTime { get; set; }
}

在我看来,我只是使用:

@Html.TextBoxFor(x => x.DefaultTime)

对于我的控制器:

public ActionResult SaveProductionTime(ProductionTimeVM vm)
{           
   ProductionTime productionTime = new ProductionTime();
   productionTime.Default = vm.DefaultTime;

   //some more code
 }

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

您可能正在将TimeSpan值保存到数据库中具有Time数据类型的列。时间只能表示一天中的某个时间,因此您无法节省超过一天的TimeSpans。

我使用bigint数据类型的列来存储和检索TimeSpan的滴答。我还想知道是否有更好的选择。对于一些流行的ORM来说,这种行为就像默认行为一样,这让我认为很多人误导了。