我的网络应用程序中有一个模态对话框,用户可以在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。我知道我有Starts
和Ends
属性,但我的模型验证验证Ends
始终大于Starts
。手动更改为23:59也很麻烦。 基本上可以通过24:00并仍然可以在服务器上解析。
答案 0 :(得分:7)
我认为范围太小了。第二天24:00
实际上是00:00
。
所以他们应该从00:00.00
到23:59.99
或其他什么。
最终答案(?)将客户端上的24:00
更改为1.0:00
。
这将有效,因为TimeSpan.Parse("1.0:00").TotalHours
会返回24
编辑:请参阅此处的文档:http://msdn.microsoft.com/en-us/library/se73z7b9.aspx。它会显示天数,小时数,分钟数等的最大范围。根据我的评论,小时数为0
到23
。
编辑:如果你只是让他们选择几个小时的整数,那么就在服务器上解析它。
例如。 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