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 更改输入字段的格式
我正在构建某种形式 (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 更改输入字段的格式