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

ASP.NET MVC页面加载时datetime-local控件不显示值问题

问题解决:ASP.NET MVC datetime-local输入框不显示绑定值

问题根源

你犯了两个关键错误:

  1. 同时使用asp-for和手动value属性:asp-for标签助手会自动根据模型的DisplayFormat生成符合要求的value值,但你手动添加的value="@Model.DataPublicacao"会覆盖这个自动生成的内容,而直接输出的模型值用的是默认日期格式,不是datetime-local输入框要求的ISO格式,导致浏览器无法识别。
  2. 格式字符串可能超出浏览器兼容范围:datetime-local输入框的标准有效值格式是yyyy-MM-ddTHH:mm(仅到分钟),部分浏览器不支持带秒的格式,你配置的{0:yyyy-MM-dd'T'HH:mm:ss}可能导致兼容性问题。

修正步骤

1. 调整模型的格式配置(可选,提升兼容性)

把格式字符串改成不带秒的版本,适配大多数浏览器:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd'T'HH:mm}")]
public DateTime DataPublicacao { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd'T'HH:mm}")]
public DateTime DataUltimaAlteracao { get; set; }

如果业务必须保留秒,也可以保留原格式,但要测试目标浏览器是否支持。

2. 移除视图中手动添加的value属性

让asp-for自动处理值绑定:

<div class="grid-duas-colunas">
    <div class="form-group div-autor-1 col-4">
        <label asp-for="DataPublicacao" class="control-label"></label>
        <input asp-for="DataPublicacao" class="form-control" />
        <span asp-validation-for="DataPublicacao" class="text-danger"></span>
    </div>
    <div class="form-group div-autor-2 col-4">
        <label asp-for="DataUltimaAlteracao" class="control-label"></label>
        <input asp-for="DataUltimaAlteracao" class="form-control" />
        <span asp-validation-for="DataUltimaAlteracao" class="text-danger"></span>
    </div>
</div>

原理说明

asp-for标签助手会自动读取模型上的DisplayFormat属性,将日期值转换成datetime-local输入框能识别的ISO格式,同时完成双向绑定。手动添加value会破坏这个自动处理流程,导致值格式不符合浏览器要求,所以即使元素属性里有值,输入框也不会展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:45:49