【发布时间】:2011-12-15 08:10:21
【问题描述】:
我有一个包含日期和日期时间字段的表单:
@Html.TextBoxFor(model => model.A, new { @type = "datetime" })
@Html.TextBoxFor(model => model.B, new { @type = "date" })
型号:
public class TestModel
{
[DataType(DataType.Date)]
public DateTime A {get;set;}
[DataType(DataType.Date)]
public DateTime B {get;set;}
}
通过使用这些输入类型,iPad 显示了不错的日期(时间)选择器。这些字段使用客户端验证进行验证。对于日期时间字段 (A) 它可以工作,但日期字段 (B) 将引发错误:“请输入有效日期”。我该如何解决?
例子:
- 此 iPad (Safari) 日期时间值有效(根据 MVC 客户端验证):12 月 15 日。 2011 9:20
- 此 iPad (Safari) 日期值无效:12 月 15 日。 2011
在 iPad 上调试代码很困难,所以我不知道 Safari 在设置输入的 value 属性时如何更改日期格式。
编辑:
我发现日期时间格式是通用日期时间格式(yyyy-MM-DDTHH:mmZ),而日期格式是yyyy-MM-dd。由于本地化,客户端验证器可能确实理解通用日期时间而不是 yyyy-MM-dd。
【问题讨论】:
-
请给出
B的输入示例,该示例会引发“请输入有效日期”错误但您认为有效。 -
@Guillaume 的已删除评论:它是有效的 HTML,但并非每个浏览器都能处理。由于 iPad 支持这些输入类型,我只在 iPad 视图中使用它。对于普通浏览器,我使用 jQuery 日期时间选择器。
-
type="date" 是 HTML5 中的新内容。你的文档类型是什么? dev.w3.org/html5/markup/input.html
-
@Guillaume 它是有效的,但在HTML 5 中,因此在所有地方都不受支持。
-
@Guillaume,它与文档类型无关。问题是 datetime 类型的值根据 MVC 客户端验证有效,但(几乎相同的格式)日期类型的值不是。
标签: c# asp.net-mvc-3 validation unobtrusive-validation