我正在尝试格式化MVC 4类中的日期时间属性,如下所示:
[Required]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DateOfBirth { get; set; }
但不能正常工作DateOfBirth属性接受日期格式前一天(EX:接受1/27/1990而不接受27/1/1990)
我正在寻找答案并尝试许多解决方案但不像
那样工作使用html helper:
@ Html.TextBoxFor(Model => Model.DateOfBirth) 感谢任何帮助,谢谢
答案 0 :(得分:3)
[[DisplayFormat]
属性仅用于显示视图中的值。它与将被接受的格式无关。您可以编写一些代码来接受字符串,并在服务器中将其解析回适当的DateTime属性。存储您的日期时间,然后当您使用[[DisplayFormat]
属性
你要做的是使用正则表达式验证用户输入的数字是“/”然后是数字,然后是“/”然后是数字。
很明显,你不是第一个遇到类似问题的人,这就是为什么日期选择器如此普遍使用,它们迫使用户选择日期并适当地格式化
答案 1 :(得分:2)
如果您使用@Html.TextBoxFor()
呈现控件,那么[DataType(DataType.Date)]
属性中的ApplyFormatInEditMode = true
和[DisplayFormat]
就不是必需的。这些仅适用于使用@Html.EditorFor()
呈现浏览器日期选择器的情况,在这种情况下格式必须为"yyyy-MM-dd"
才能在所有浏览器中正确显示。
如果要在文本框中显示格式化日期,请使用
@Html.TextBoxFor(Model => Model.DateOfBirth, "{0:dd/MM/yyyy}")
请注意,如果您回发"27/1/1990"
(1990年1月27日)并且服务器的当前文化具有日期格式"MM/dd/yyyy"
,那么您将需要自定义模型绑定器来正确绑定日期。 Refer example here