我的INV_Assets模型中有3个日期字段:acquired_date
,disposed_date
和created_date
。我让它们在某些MM/dd/yyyy
中以@Html.EditorFor()
格式显示。
我现在尝试做的是添加一个简单的日期选择器功能,这是我在THIS发布的关于在我的模型属性上使用[DataType(DataType.Date)]
属性的帖子。我的created_date
目前设为:
[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime created_date { get; set; }
这会呈现下拉功能,但框中的值显示为“mm / dd / yyyy”,而不是显示实际值。例如,如果我删除了[DataType(DataType.Date)]
属性:
[Required]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime created_date { get; set; }
我的值显示为“02/10/2015”,没有datepicker功能。
任何人都可以提供一个示例,说明如何渲染此日期选择器功能,但在框中显示我的字段的实际值(当存在值时)?
修改:
我的View上的created_date
字段目前定义如下(根据Chris的建议,我试图强制该格式为YYYY-MM-DD格式):
<div class="form-group">
@*@Html.LabelFor(model => model.created_date, htmlAttributes: new { @class = "control-label col-md-2" })*@
<span class="control-label col-md-2">Created Date:</span>
<div class="col-md-10">
@Html.EditorFor(model => model.created_date, new { htmlAttributes = new { @class = "form-control", @Value = Model.created_date.ToString("YYYY-MM-DD") } })
@Html.ValidationMessageFor(model => model.created_date, "", new { @class = "text-danger" })
</div>
</div>
这将呈现以下代码:
<input value="YYYY-02-DD" class="form-control text-box single-line" data-val="true" data-val-date="The field created_date must be a date." data-val-required="The created_date field is required." id="created_date" name="created_date" type="date">
答案 0 :(得分:3)
这对我有用
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
遵循Chris Pratt的想法
答案 1 :(得分:2)
我假设您还使用HTML 5 date
输入类型,即<input type="date">
。日期输入类型的值必须是ISO格式的日期:YYYY-MM-DD。您看到的占位符只是浏览器提供了更加用户友好的显示,但它在幕后转换为ISO格式。如果您没有提供正确的ISO日期,那么它基本上被浏览器视为没有任何价值。