3

我在 .Net MVC4 应用程序中的模型中有一个 DateTime 字段。我希望编辑视图显示日期值,同时向用户提供使用日历控件的选项。

添加属性[DisplayFormat(DataFormatString = "{0:d}",ApplyFormatInEditMode = true)]向用户显示当前值作为文本字段: 显示格式输出

添加[DataType(DataType.Date)]显示“mm/dd/yyyy”并隐藏当前值: DateFormat(DataType.Date) 输出

并在选择向下箭头时提供了一个不错的日历小部件:
日历小部件

有没有办法结合这个功能,让用户可以看到当前选择的日期和日历小部件?

更新

这是浏览器行为。控件生成的标记包含当前日期值:

 <input class="text-box single-line" data-val="true" data-val-date="The field Dining Date must be a date." data-val-required="The Dining Date field is required." id="DiningDate" name="DiningDate" type="date" value="2/15/2013">

IE9 通过显示没有小部件的日期来呈现此标记,而 Chrome 隐藏日期。

4

1 回答 1

6

IE9 通过显示没有小部件的日期来呈现此标记

IE9 根本不支持日期输入,因此您可以忘记此 Web 浏览器中的任何小部件。甚至 IE10 都不支持 :-) 请following article查看支持 HTML5 日期输入的网络浏览器。所有其他不支持它的浏览器只会显示一个标准文本框,而没有任何日期时间选择器小部件。

而 Chrome 隐藏了日期。

HTML specification声明日期输入字段的属性value必须使用RFC 3339 format才能显示此默认值:

<input id="Date" name="Date" type="date" value="2013-02-17" />

如果value使用不同的格式,则不会显示此默认值。

因此,如果您不想获得未定义的行为,请确保遵守规范:

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

然后你会得到预期的结果:

在此处输入图像描述

于 2013-02-17T14:39:01.030 回答