由于某种原因,我似乎无法获取请求数据以绑定到方法的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())
我在做什么错了?
答案 0 :(得分:0)
问题在于NodaTime中缺少TypeConverter实现。随着PR 1237的出现,此问题已得到解决,转换器现在大多就位。不幸的是,我认为直到NodaTime 3.0才将其发布,但是PR包含了将它们移入您自己的存储库并在运行时进行绑定的说明。