2

我正在从 Web API 读取数据并填充表单。当我将其提交回 Web API 时,我收到此错误:

{"Message":"发生错误。","ExceptionMessage":"类型 'MvcApplication1.Models.ProductSale' 上的属性 'StartDate' 无效。标记为 [Required] 的值类型的属性也必须用 [DataMember] 标记(IsRequired=true)] 被识别为必需。考虑使用 [DataContract] 和属性使用 [DataMember(IsRequired=true)] 来分配声明类型。","ExceptionType":"System.InvalidOperationException","StackTrace": " 在 System.Web.Http.Validation.Validators.ErrorModelValidator.Validate(ModelMetadata 元数据,对象容器)\r\n 在 System.Web.Http.Validation.DefaultBodyModelValidator.ShallowValidate(ModelMetadata 元数据,ValidationContext 验证上下文,对象容器)\r \n
在 System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata metadata, ValidationContext validationContext)\r\n at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container)\r\n
at System.Web.Http.ModelBinding.FormatterParameterBinding.<>c_ DisplayClass1.b _0(对象模型)\r\n 在 System.Threading.Tasks.TaskHelpersExtensions.<>c_ DisplayClass49.b _48()\r\n 在 System。 Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancelToken)"} 1

我的日期以“2013-01-31T16:27:18.503”的形式出现在 Web API 中,并以“2013-01-31T05:00:00.000Z”的形式发回。我可以在发送到 Web API 之前拦截有效负载,并且可以使用http://momentjs.com之类的东西来解析它,但我该怎么办?这让我发疯!

4

2 回答 2

1

2013-01-31T16:27:18.503是根据XML 规范的 XML 日期。

2013-01-31T05:00:00.000Z似乎是ISO 8601日期。

在某个地方,这似乎出错了。不知道你的格式化程序,你在日期做什么以及它如何变化是不可能的。

日期格式取决于您的格式化程序。如果您使用 JSON 格式化程序,这可能会有所不同。

于 2013-01-31T17:36:23.087 回答
0

错误信息有答案。您发布的数据没有任何问题。只需将 DataMember(IsRequired=true) 属性放在 ProductSales 的 StartDate 属性上即可使验证满意。

于 2013-01-31T17:13:48.757 回答