Во-первых, когда вы связываетесь со свойством типа DateTime
(и DataType
из DateTime
), InputTagHelper
будет отображать вход с типом datetime-local
. Это заставит поддерживающие браузеры отображать элемент управления DatePicker, который вы видите здесь. Однако этот встроенный элемент управления работает только со значениями даты / времени в формате ISO, которым не является ваша строка даты и времени. Если строка не может быть проанализирована как дата / время ISO, она обрабатывается как ноль, и поэтому никакое значение не отображается.
Короче говоря, вам нужно указать строку типа datetime, например: yyyy-MM-dd\Thh:mm:ss
или просто o
.
@DateTime.Now.ToString("o")
Во-вторых, при привязке к определенному свойству (используя asp-for
) не следует указывать значение вручную. Вместо этого, если вы хотите, чтобы свойство по умолчанию имело значение DateTime.Now
, установите его как значение по умолчанию для свойства:
[DataType(DataType.DateTime)]
public DateTime DateUploaded { get; set; } = DateTime.Now;
В этом случае вам вообще не нужно будет форматировать его, поскольку Razor позаботится об этом за вас.
Наконец, использование DateTime.Now
- очень плохая идея для веб-приложения. Значение будет текущим временем на сервере , и почти наверняка не будет «сейчас» для пользователя, если только он не окажется в том же часовом поясе, что и ваш сервер. Вместо этого используйте DateTime.UtcNow
или даже лучше DateTimeOffset.UtcNow
.