Что определяет DateTime.Kind, когда ASP. Net получает опубликованную модель со свойством DateTime? - PullRequest
2 голосов
/ 27 апреля 2020

У нас есть несколько страниц Vue с моделями Typescript, которые подчиняются одному и тому же действию контроллера. Контроллер принимает один комплексный параметр, а класс имеет свойство DateTime.

Страницы Vue были изменены с течением времени и теперь выглядят совершенно не похожими друг на друга. Однако во всех случаях свойство DateTime берется из поля inputDateOfBirth и сопоставляется с Moment. Код выглядит примерно так:

var dob = Helpers.ToMoment(this.inputDateOfBirth);

if (dob.isValid()) {
    this.dateOfBirth = dob.format("YYYY-MM-DD HH:mm:ss");
}

И dateOfBirth, и inputDateOfBirth перечислены как тип string в модели Typescript.

В большинстве случаев комплексный параметр, который в итоге получает действие контроллера, имеет это свойство DateTime как DateTime.Kind из Utc. Один из них, однако, имеет DateTime.Kind из Unspecified. Это вызывает проблемы в дальнейшем.

Что определило значение DateTime.Kind данных, интерпретируемых действием контроллера C# в ASP. NET MVC, и что я могу сделать, чтобы гарантировать получено последовательно как Ut c?

1 Ответ

2 голосов
/ 27 апреля 2020

Формат даты может вызвать эту разницу.
Связыватель модели по умолчанию для DateTime ожидает ISO 8601 Time zone designators, что означает, что если ваша строка даты выглядит следующим образом 2009-06-15T13:45:30.0000000Z, то DateTime.Kind будет UTC как представлено «Z».
Или, если это так 2009-06-15T13:45:30.0000000-07:00, где представлено смещение часового пояса «-07: 00», DateTime.Kind будет Local.
Если ни один из этот атрибут представлен, DateTime.Kind будет Unspecified.

...