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

ASP.NET Core控制器传日期值到Create视图无法显示如何解决?

问题原因

HTML5原生type="date"类型的输入框,要求传入的value属性必须为yyyy-MM-dd的ISO标准日期格式,你当前输出的dd.MM.yyyy格式不符合浏览器的识别规则,因此不会展示内容。
另外asp-for标签助手在绑定DateTime类型字段时,会自动生成符合要求的格式,但前提是你直接给视图绑定的模型属性赋值,而非通过ViewData传值,ViewData传值时不会自动做格式转换。

解决方法

方案1(推荐,符合MVC规范)

直接给Create视图绑定的模型属性赋值,不需要用ViewData传值,控制器代码修改如下:

var item = _context.Buchungen
  .OrderBy(p => p.Id)
  .LastOrDefault();

// 初始化视图绑定的模型,假设模型类为Buchungen
var newBuchung = new Buchungen();
if (item != null)
{
    newBuchung.Bankbeleg = item.Bankbeleg;
    newBuchung.Belegnummer = item.Belegnummer + 1;
    newBuchung.Datum = item.Datum.Value;
}
// 把模型传入视图
return View("Create", newBuchung);

视图中不需要手动写value属性,asp-for会自动处理格式,简化后的视图代码:

<div class="form-group">
    <label asp-for="Belegnummer" class="control-label"></label>
    <input type="text" asp-for="Belegnummer" class="form-control" />
    <span asp-validation-for="Belegnummer" class="text-danger"></span>
</div>

<div class="form-group">
   <label asp-for="Datum" class="control-label"></label>
   <input type="date" asp-for="Datum" class="form-control" />
   <span asp-validation-for="Datum" class="text-danger"></span>
</div>

方案2(保留ViewData的修改方式)

给ViewData赋值时手动指定ISO标准日期格式,控制器代码修改:

ViewData["Datum"] = item.Datum.Value.ToString("yyyy-MM-dd");

如果修改后还是不显示,说明asp-for自动生成的value覆盖了你写的属性,可以把输入框的asp-for替换为name属性:

<input type="date" name="Datum" class="form-control" value="@ViewData["Datum"]" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:15:03