У меня есть проект ASP Core 2.2, который использует RazorPages, я связываю некоторые данные, некоторые из которых я отправляю клиенту, клиент должен отредактировать эти данные там, где это необходимо, перед отправкой обратно.
Этоработает для всего отлично, пока я не хочу связать объект DateTime.Данные привязаны к локальному элементу управления datetime HTML, как и ожидалось, и в соответствии с сетевым трафиком они отправляются обратно в данные формы запросов POST, однако объект DateTime в OnPost всегда читается как 01/01/0001
Я уже проверил это в других браузерах на случай возникновения проблем.FireFox даже не отображает datetime-local правильно (это просто текстовое поле, а не средство выбора даты).
Я также попытался отправить объект DateTime как локальное и время UTC, и я установил свою культуру наen-GB, где я нахожусь.
Мой код для этого следующий:
RequestLocalizationOptions localizationOptions = new RequestLocalizationOptions
{
SupportedCultures = new List<CultureInfo> { new CultureInfo("en-GB") },
SupportedUICultures = new List<CultureInfo> { new CultureInfo("en-GB") },
DefaultRequestCulture = new RequestCulture("en-GB")
};
app.UseRequestLocalization(localizationOptions);
StartAt устанавливается для каждой строки как:
StartAt = DateTime.Now.ToUniversalTime(),
и привязывается к представлению следующим образом:
<input asp-for="@Model.CreationData.DataLines[lnNo].StartAt" class="form-control"/>
Весь связанный объект:
public class JobCreationData
{
[Required]
public string Name { get; set; }
[Required]
public string Description { get; set; }
public int SelectedJobWorkflow { get; set; }
public List<JobCreationDataLine> DataLines { get; set; } = new List<JobCreationDataLine>();
public class JobCreationDataLine
{
public int WorkflowVersionId { get; set; }
public string WorkflowVersionCode { get; set; }
public string WorkflowVersionDescription { get; set; }
public int SelectedWorkCenterId { get; set; }
public DateTime StartAt;
public List<JobCreationBusinessUnit> BusinessUnits { get; set; }
}
public class JobCreationBusinessUnit
{
public int WantedBusinessUnitId { get; set; }
public int BusinessUnitId { get; set; }
public string Alias { get; set; }
public bool IsRequired { get; set; }
public int SelectedBusinessUnitLineId { get; set; }
}
}
Ниже приведены снимки экрана, на которых показан элемент управления HTML5, результат привязанного объекта недействителени данные формы, отправляемые в OnPost.
Как вы можете видеть, я ожидаю, что DateTime будет правильно связываться.
Есть идеи?