MVC日期时间中的DisplayFormat

时间:2014-11-12 22:41:34

标签: asp.net asp.net-mvc twitter-bootstrap asp.net-mvc-4 c#-4.0

我正在尝试格式化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)

我正在寻找答案并尝试许多解决方案但不像

那样工作

enter link description here

使用html helper:

@ Html.TextBoxFor(Model => Model.DateOfBirth) 感谢任何帮助,谢谢

2 个答案:

答案 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