C# 日期一直默认为“0”;年月日;使用EditorFor时

C# 日期一直默认为“0”;年月日;使用EditorFor时,c#,asp.net-mvc,datetime,C#,Asp.net Mvc,Datetime,我正在制作一个可以编辑个人资料的页面。 除了一件事外,其他一切都正常工作: 在可以编辑出生日期的字段中,该值保持默认为通用的“dd/mm/yyyy”字母,而不是数据库中的实际值 当只在另一个页面中显示值时,没有问题。 我尝试过在模型上更改显示格式,尝试过在全局文件中更改区域设置时区,尝试过先将日期转换为字符串,然后通过一个普通值字段显示它,给出了class=“date”字段和一系列其他内容。似乎什么都不起作用,让我怀疑自己是否错过了一些非常愚蠢的事情 字段按如下方式生成: <div cla

我正在制作一个可以编辑个人资料的页面。 除了一件事外,其他一切都正常工作: 在可以编辑出生日期的字段中,该值保持默认为通用的“dd/mm/yyyy”字母,而不是数据库中的实际值

当只在另一个页面中显示值时,没有问题。 我尝试过在模型上更改显示格式,尝试过在全局文件中更改区域设置时区,尝试过先将日期转换为字符串,然后通过一个普通值字段显示它,给出了class=“date”字段和一系列其他内容。似乎什么都不起作用,让我怀疑自己是否错过了一些非常愚蠢的事情

字段按如下方式生成:

<div class="form-group" id="DateOfBirth">
     @Html.LabelFor(model => model.DateOfBirth, htmlAttributes: new { @class = "control-label" })
     @Html.EditorFor(model => model.DateOfBirth, new { htmlAttributes = new { @class = "form-control form-control-sm col-md-3" }})
     @Html.ValidationMessageFor(model => model.DateOfBirth, "", new { @class = "text-danger" })
</div>

这对我有用。请在
DateOfBirth
属性上设置属性
DisplayFormat

[DataType(DataType.Date)]            
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]            
public DateTime DateOfBirth { get; set; };

dd/mm/yyyy
是本地化的,而不是通用的。区域设置由最终用户的浏览器语言和web应用的本地化设置决定。甚至可以通过在每个请求启动时设置请求线程的CultureInfo为每个用户指定一个区域设置
全局文件中的区域设置时区
没有这样的事情。区域设置是一种区域性,例如
en-US
fr-fr
,用于指定语言、格式和解析设置。
而不是数据库中的实际值。
这是什么值日期时间,所有数据库中的日期类型都是二进制值。它们没有格式。格式仅在日期转换为显示字符串时适用哇,我尝试了[DisplayFormat],但在编辑模式下没有启用格式,我想。。。本可以帮我节省很多时间的!非常感谢!
[DataType(DataType.Date)]            
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]            
public DateTime DateOfBirth { get; set; };