Entity Framework Core仅日期属性格式化后编辑页仍要求输入DateTime问题
问题原因
你当前的配置仅指定了数据的展示格式,没有告知框架该字段对应的前端输入控件类型为日期选择器,所以编辑页默认生成了支持完整日期时间的输入框。
解决方案
方案1(推荐,全局生效)
在属性上额外添加[DataType(DataType.Date)]特性即可,修改后的属性配置如下:
[Column(TypeName="Date")] [Display(Name = "出生日期")] [DataType(DataType.Date)] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")] public DateTime BirthDate { get; set; }
添加该特性后,Razor视图自动生成的输入框会默认使用type="date"的HTML5日期控件,只会要求选择/输入日期,不会出现时间部分。
方案2(视图层手动修改)
直接在编辑页的对应输入控件上手动指定type属性:
- 若使用Input Tag Helper,写法如下:
<Input asp-for="BirthDate" type="date" class="form-control" />
- 若使用Html Helper,写法如下:
@Html.EditorFor(x => x.BirthDate, new { htmlAttributes = new { @type = "date", @class = "form-control" } })
注意事项
如果出现日期绑定失败的情况,可以把DisplayFormat的DataFormatString调整为"{0:yyyy-MM-dd}",和HTML5日期控件的默认提交格式保持一致即可。
内容的提问来源于stack exchange,提问作者Felipe K. Bernardino
相关产品推荐
相关产品推荐

