我的 Web 应用程序中有一个模式对话框,用户可以在其中输入 00:00 到 24:00 之间的时间范围。范围滑块用于选择此范围。
一切都按预期工作,除了每当用户将正确的范围句柄设置为 24:00 默认模型绑定(bind)器无法解析此 TimeSpan
。
public class Timing
{
public TimeSpan Starts { get; set; }
public TimeSpan Ends { get; set; }
}
我发送回服务器的对象具有
IList<Timing>
属性。所以。问题只是字符串值 "24:00"无法解析为
TimeSpan
实例。是否可以说服默认模型绑定(bind)器识别这样的字符串值?我想避免将客户端的 24:00 更改为 00:00。我知道我有
Starts
和 Ends
属性,但我的模型验证验证 Ends
总是大于 Starts
。手动改成23:59也很麻烦。 基本上有可能通过 24:00 并且仍然在服务器 上被解析。 最佳答案
我认为这个范围有点太大了。 24:00
实际上是第二天的 00:00
。
所以他们应该从 00:00.00
到 23:59.99
或其他什么。
FINAL ANSWER(?) 将客户端上的 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
。
关于asp.net-mvc - Asp.net MVC 中的 TimeSpan 和 "24:00"解析错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6415473/