我有一个包含日期和日期时间字段的表单:
@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在设置输入值属性时如何更改日期格式。
编辑:
我发现日期时间格式是通用日期时间格式(yyyy-MM-DDTHH:mmZ
),而日期格式是yyyy-MM-dd
。可能客户端验证器确实理解通用日期时间,而不是yyyy-MM-dd
因为本地化。
答案 0 :(得分:5)
我遇到了完全相同的问题,当我在iPhone上查看我正在开发的移动网站时,我已经疯狂了。以下问题的讨论为我解决了这个问题。
https://github.com/jzaefferer/jquery-validation/issues/20。
另外,为了以无缝的方式与它保持距离,我为Date数据类型创建了以下剃刀编辑器模板:
@model DateTime?
@Html.TextBox("myDate", ViewData.Model.ToIso8601FullDate(), new { type = "date", @class = "text-box single-line" })
和一个方便的扩展方法,为html 5日期输入类型提供了一种它喜欢使用的格式spec for input type=date:
public static string ToIso8601FullDate(this DateTime? d)
{
if (!d.HasValue) return null;
return d.Value.ToString("yyyy-MM-dd");
}