TimeSpan和“24:00”在Asp.net MVC中解析错误

时间:2011-06-20 18:05:24

标签: asp.net-mvc parsing model-binding timespan

我的网络应用程序中有一个模态对话框,用户可以在00:00到24:00之间输入时间范围。范围滑块用于选择此范围。

一切都按预期工作,但每当用户设置正确的范围句柄以使其值为24:00时,默认模型绑定器无法解析此TimeSpan

public class Timing
{
    public TimeSpan Starts { get; set; }
    public TimeSpan Ends { get; set; }
}

我发送回服务器的对象有一个IList<Timing>属性。

因此。问题是字符串值“24:00”无法解析为TimeSpan实例。是否有可能说服默认模型绑定器识别这样的字符串值?

我想避免在客户端24:00更改为00:00。我知道我有StartsEnds属性,但我的模型验证验证Ends始终大于Starts。手动更改为23:59也很麻烦。 基本上可以通过24:00并仍然可以在服务器上解析

3 个答案:

答案 0 :(得分:7)

我认为范围太小了。第二天24:00实际上是00:00。 所以他们应该从00:00.0023:59.99或其他什么。

最终答案(?)将客户端上的24:00更改为1.0:00。 这将有效,因为TimeSpan.Parse("1.0:00").TotalHours会返回24

编辑:请参阅此处的文档:http://msdn.microsoft.com/en-us/library/se73z7b9.aspx。它会显示天数,小时数,分钟数等的最大范围。根据我的评论,小时数为023

编辑:如果你只是让他们选择几个小时的整数,那么就在服务器上解析它。

例如。 TimeSpan ts = TimeSpan.FromHours(24) 返回1.00:00:00 当然,您总是可以说ts.TotalHours并返回24

答案 1 :(得分:2)

进行预处理

strText.Replace("24:", "00:")

答案 2 :(得分:1)

将结束的值限制为23:59

第二天24:00 == 00:00