【发布时间】:2020-02-07 04:33:54
【问题描述】:
我的模型有一个日期时间字段:
public DateTime ProjectStart { get; set; }
如果我希望时间以 24 小时格式显示,在视图中作为纯文本,我可以这样做(大写 HH):
@Model.ProjectStart.ToString("dd/MM/yyyy HH:mm")
但是如何控制输入字段中的时间格式?
<input asp-for="ProjectStart" class="form-control" />
时间以 24 小时格式存储在数据库中。只是输入字段显示错误。它应该以这种格式显示日期和时间:
dd/MM/yyyy HH:mm(例如 28/02/2019 17:45)
我的应用程序文化 (CultureInfo.CurrentCulture) 是 nb-NO,这是正确的。这种文化中日期和时间的标准格式是我试图在输入字段中显示的格式。 (Norwegian date and time formats)
更新
我尝试了两种解决方案,但都没有成功:
在视图模型中装饰属性:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy HH:mm}")]
在输入标签中添加标签助手属性asp-format:
<!-- I tried several variations of this: -->
<input asp-for="ProjectStart" asp-format="{0:dd/MM/yyyy HH:mm}" class="form-control" />
<input asp-for="ProjectStart" asp-format="{0:dd.MM.yyyy HH:mm}" class="form-control" />
<input asp-for="ProjectStart" asp-format="{0:dd-MM-yyyy HH:mm}" class="form-control" />
两种解决方案都只是清空了输入字段中的值,只显示“mm/dd/yyyy --:-- --”,即格式没有改变,数据消失了。
更新 2
这是带有asp-format-attribute 的输入标签的渲染HTML:
<input class="form-control"
type="datetime-local"
data-val="true"
data-val-required="The Starttidspunkt field is required."
id="ProjectStart"
name="ProjectStart"
value="12.10.2019 07:12" />
如您所见,格式正确,数据就在那里。但在我的浏览器中,日期选择器显示“mm/dd/yyyy --:-- --”。
【问题讨论】:
-
你能从你的输入标签发布渲染的 HTML 吗?使用
asp-format属性。 -
@mxmissile 请参阅更新 2。HTML 中的格式正确,但 Chrome 中的日期选择器显示“mm/dd/yyyy --:-- --”。
标签: c# datetime asp.net-core-mvc