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



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

我看到了类似问题的asnwers,人们建议添加格式,但当我添加格式时,输入字段不会生成默认值(通过viewmodel传递的值(,可见值为:;dd.mm.rrrr--:--";(可能是我所在国家/地区的默认日期格式(。当我查看html时,我发现在value属性中存在适当的值("17.01.2022 12:22"(。

当我从默认日期时间选择器中选择值时,即使我提交表单(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格式=";{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}");

在前端,你们可以利用这个时机。JS更改输入字段的格式

最新更新