日期显示Asp.Net MVC中的选项

Dan*_*vay 3 asp.net-mvc

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

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

添加[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">
Run Code Online (Sandbox Code Playgroud)

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

Dar*_*rov 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" />
Run Code Online (Sandbox Code Playgroud)

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

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

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述