仅在@ Html.EditorFor帮助器中显示日期

ton*_*9uk 2 asp.net-mvc asp.net-mvc-4

我正在尝试填充@Html.EditorFor助手.我创建了一个具有以下属性的视图模型

[DataType(DataType.Date, ErrorMessage="Date only")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
public DateTime? YearBought { get; set; }
Run Code Online (Sandbox Code Playgroud)

我的助手设置如下(a)

@Html.ValidationMessageFor(m => m.YearBought)
@Html.EditorFor(model => model.YearBought, new { @type = "date" })
Run Code Online (Sandbox Code Playgroud)

我也试过(二)

@Html.ValidationMessageFor(m => m.YearBought)
@Html.EditorFor(model => model.YearBought.Value.Date)
Run Code Online (Sandbox Code Playgroud)

使用上述格式(a)不显示任何内容.使用上述格式(b)12/05/2014 00:00:00以文本框格式显示.

我试图实现一个没有时间显示的datepicker格式

我已经回顾了其他几个问题但是看不出我做了什么不同.

当我查看我的数据库时,值保存为2014-05-12,当我保存值时,EditorFor帮助程序生成所需的输入工具

问题已审核

第一个 第二个 第三 ......列表继续

编辑刚刚在chrome dev工具中打开控制台,所以这条消息

指定值"12/05/14"不符合所需格式,"yyyy-MM-dd"

我以为DisplayFormat(DataFormatString = "{0:dd/MM/yy}"是在定义如何显示我的约会?

小智 7

使用时需要使用ISO格式 type="date"

[DataType(DataType.Date, ErrorMessage="Date only")]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? YearBought { get; set; }
Run Code Online (Sandbox Code Playgroud)

这将在浏览器文化中显示日期.

注意没有必要添加@type = "date".该EditorFor()方法将添加因为DataType属性.另请注意,type="date"仅在Chrome中支持(FireFox和IE只会生成普通文本框)

如果您确实希望dd/MM/yyyy在标准文本框中显示格式,则可以使用

@Html.TextBoxFor(m => m.YearBought, "{0:dd/MM/yyyy}")
Run Code Online (Sandbox Code Playgroud)

  • 当我在编辑器中使用相同的语法时,它不起作用 @Html.EditorFor(m => m.YearBought, "{0:dd/MM/yyyy}") (2认同)