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

时间:2013-02-17 14:13:39

标签: asp.net-mvc

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

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

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

并在选择向下箭头时提供一个漂亮的日历小部件:
Calendar widget

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

更新

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

 <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隐藏日期。

1 个答案:

答案 0 :(得分:6)

  

IE9通过显示没有小部件的日期

来呈现此标记

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

  

而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)]

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

enter image description here