You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC (FX)中EditorFor控件无法显示数据库保存的日期值问题咨询

问题原因

你遇到的是HTML5日期输入框和ASP.NET MVC模型格式化不匹配的典型问题:

  1. 你给字段加了[DataType(DataType.Date)]注解,EditorFor会默认生成type="date"的HTML5原生输入框,这类输入框要求传入的value必须符合yyyy-MM-dd的ISO标准格式,浏览器才能识别并自动填充显示。
  2. 你之前手动设置@Value时用了mm-dd-yyyy格式:一方面小写mm是分钟的占位符,输出的内容根本不是月份;另一方面格式不符合原生输入框的要求,浏览器无法识别自然不会显示已有值。

解决步骤

1. 修正模型字段注解

给两个日期字段补充DisplayFormat配置,指定编辑模式下的格式化规则,无需手动拼接value:

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

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

参数ApplyFormatInEditMode = true会让MVC在渲染编辑框时,自动按照指定格式填充输入框的value值。

2. 还原Edit视图代码

去掉你之前手动加的@Value属性,改回原来的简洁写法即可:

<div class="form-group">
    @Html.LabelFor(model => model.Hire_Date, "Hire Date", htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-4">
        @Html.EditorFor(model => model.Hire_Date, new { htmlAttributes = new { @class = "datepicker" } })
        @Html.ValidationMessageFor(model => model.Hire_Date, "", new { @class = "text-danger" })
    </div>
    <div style="margin-right:1%"><p style="color:#FF0000">*</p></div>
</div>

3. (可选)匹配日期选择插件格式

如果你用的是jQuery UI Datepicker这类第三方日期选择插件,需要在初始化时指定格式和模型配置保持一致:

$('.datepicker').datepicker({
    dateFormat: 'yy-mm-dd',
    // 保留你原有其他配置
});

验证排查

如果修改后还是不显示,可以在GET的Edit接口处打断点,确认查出来的WC_Inbox对象的Hire_Date、Injury_Date属性确实有有效值,排除数据库查询为空的问题。

内容的提问来源于stack exchange,提问作者GrillOwner69420

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:15:02