Model DataAnnotation [DataType(DateType.Date)] 呈现 DatePicker 但隐藏了我的值?
Model DataAnnotation [DataType(DateType.Date)] renders DatePicker but hides my value?
我的 INV_Assets 模型中有 3 个日期字段:acquired_date
、disposed_date
和 created_date
。我让它们在某些 @Html.EditorFor()
中显示为格式 MM/dd/yyyy
。
我现在想做的是添加一个简单的日期选择器功能,这是我遇到 THIS post 关于在我的模型属性上使用 [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”,没有日期选择器功能。
任何人都可以提供一个示例,说明我如何呈现此日期选择器功能,但在框中显示我的字段的实际值(当存在值时)吗?
编辑:
我视图中的 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">
我假设您也在使用 HTML 5 date
输入类型,即 <input type="date">
。日期输入类型的值必须是 ISO 格式的日期:YYYY-MM-DD。你看到的占位符只是浏览器提供了一个更友好的显示,但它在幕后转换 to/from ISO 格式。如果您没有提供正确的 ISO 日期,那么它基本上会被浏览器视为没有价值。
这对我有用
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
遵循 Chris Pratt 的想法
我的 INV_Assets 模型中有 3 个日期字段:acquired_date
、disposed_date
和 created_date
。我让它们在某些 @Html.EditorFor()
中显示为格式 MM/dd/yyyy
。
我现在想做的是添加一个简单的日期选择器功能,这是我遇到 THIS post 关于在我的模型属性上使用 [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”,没有日期选择器功能。
任何人都可以提供一个示例,说明我如何呈现此日期选择器功能,但在框中显示我的字段的实际值(当存在值时)吗?
编辑:
我视图中的 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">
我假设您也在使用 HTML 5 date
输入类型,即 <input type="date">
。日期输入类型的值必须是 ISO 格式的日期:YYYY-MM-DD。你看到的占位符只是浏览器提供了一个更友好的显示,但它在幕后转换 to/from ISO 格式。如果您没有提供正确的 ISO 日期,那么它基本上会被浏览器视为没有价值。
这对我有用
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
遵循 Chris Pratt 的想法