NodaTime类型不是模型绑定

时间:2018-07-25 22:42:28

标签: asp.net nodatime

由于某种原因,我似乎无法获取请求数据以绑定到方法的NodaTime参数。有了为NodaTime配置的JsonSerializerSettings,我就可以毫无问题地序列化NodaTime类型并反序列化它们。我尝试在Global.asax.cs

中使用以下内容
JsonConvert.DefaultSettings = () => new JsonSerializerSettings().ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);
// or this
// GlobalConfiguration.Configuration.Formatters.OfType<System.Net.Http.Formatting.JsonMediaTypeFormatter>().First().SerializerSettings.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);

示例请求:/Home/NodaTimeTest?offset=-07

示例端点:public object NodaTimeTest(Offset offset)

我也尝试了其他NodaTime类型。

我已经阅读了NodaTime中实现的TypeConverter,这将使自定义ModelBinders不必要。因此似乎不需要这样的东西:

config.BindParameter(typeof(Offset), new OffsetModelBinder())

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

问题在于NodaTime中缺少TypeConverter实现。随着PR 1237的出现,此问题已得到解决,转换器现在大多就位。不幸的是,我认为直到NodaTime 3.0才将其发布,但是PR包含了将它们移入您自己的存储库并在运行时进行绑定的说明。