ASP.NET 日期时间数据类型的 MVC 输入字段未刷新其值

ASP.NET MVC input field with datetime datatype is not refreshing its value

我正在构建某种形式 (ASP.NET MVC)。我有一个日期时间输入字段。我将 viewmodel 传递给初始化值为 属性 和日期 (DateTimeOffset.Now) 的视图。问题是在浏览器中生成的日期时间选择器也有我不需要的秒和毫秒。

我看到类似问题的答案,人们建议添加格式,但是当我添加格式时,输入字段没有生成默认值(通过 viewmodel 传递的值),可见值是:“dd.mm.rrrr --:--"(可能是我国的默认日期格式)。当我查看 html 时,我发现在值 属性 中有正确的值(“17.01.2022 12:22”)。

当我 select 来自默认日期时间选择器的值时,一切正常,即使我提交表单 (httpost) 并重新加载值也是如此。

<form class="form" asp-action="ScheduleItemsAdd" method="post">
<div class="form-group d-flex flex-column" >
    <label asp-for="FirstVisitDateTime" class="control-label"></label>
    <input asp-for="FirstVisitDateTime" class="form-control" asp-format="{0:dd.MM.yyyy hh:mm}">

    <button type="submit" class="btn btn-primary w-100">Add</button>
</div>

当我删除“asp-format="{0:dd.MM.yyyy hh:mm}" 时,它将加载初始值,但会在日期时间选择器中显示秒和毫秒。

    private DateTimeOffset? _firstVisitDateTime;
    [DataType(DataType.DateTime)]
    [DisplayFormat(  ApplyFormatInEditMode = true)]

    public DateTimeOffset FirstVisitDateTime
    {
        get
        {
            if (_firstVisitDateTime.HasValue)
            {
                return _firstVisitDateTime.Value;
            }
            else
            {
                return DateTimeOffset.Now;
            }
        }
        set { _firstVisitDateTime = value; }
    }

我想加载初始值(或只是 DateTime.Now)并使用没有秒和毫秒的默认日期时间选择器。

有什么建议吗?

切换:

[DataType(DataType.Datetime)]

至:

[DataType(DataType.Date)]

这只会在浏览器中显示日期部分。

如果可以,您可以将输入字段显示类型更改为字符串,然后在支持时您可以使用 C# 代码来格式化日期时间,即

mydatetime.ToString("{0:dd.MM.yyyy hh:mm}");

在前端,您可以使用 moment.JS 更改输入字段的格式