当 ASP.Net 接收到一个带有 DateTime 属性的发布模型时,是什么决定了 DateTime.Kind?

问题描述 投票:0回答:1

我们有许多Vue页面,有Typescript模型,它们提交给同一个控制器操作。控制器接收一个复杂的参数,而这个类的特点是有一个DateTime属性。

这些Vue页面经过一段时间的修改,现在看起来很不一样。然而,在所有的情况下,DateTime属性都是从一个输入的DateOfBirth字段中获取的,并与Moment进行映射。代码往往看起来有点像这样。

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

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

两个 dateOfBirthinputDateOfBirth 被列为类型 string 在Typescript模型中。

在大多数情况下,最终被控制器动作接收的复杂参数有这个DateTime属性作为 DateTime.KindUtc. 然而,其中一个人,有一个 DateTime.KindUnspecified. 这将导致进一步的问题。

在ASP.NET MVC中,C#控制器动作解释的数据的DateTime.Kind值是由什么决定的,我可以做些什么来确保它始终如一地作为Utc接收?

c# asp.net asp.net-mvc datetime momentjs
1个回答
2
投票

日期的格式可以导致这种差异。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.

© www.soinside.com 2019 - 2024. All rights reserved.