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