我正在从Web API读取数据并填充表单。当我将其提交回 Web API 时,出现此错误:
{"消息":"发生错误。","异常消息":"属性 类型"MvcApplication1.Models.ProductSale"上的"StartDate"无效。 标记为 [必需] 的值类型属性也必须标记为 [DataMember(IsRequired=true)] 被识别为必需。考虑 使用 [数据协定] 和属性属性来归属声明类型 跟 [DataMember(IsRequired=true)].","ExceptionType":"System.InvalidOperationException","StackTrace":" 在 System.Web.Http.Validation.Validators.ErrorModelValidator.Validate(ModelMetadata 元数据,对象容器)\r at System.Web.Http.Validation.DefaultBodyModelValidator.ShallowValidate(ModelMetadata 元数据, 验证上下文验证上下文, 对象容器)\r
在 System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata 元数据, 验证上下文验证上下文)\r at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata 元数据, 验证上下文验证上下文, 对象容器)\r
在 System.Web.Http.ModelBinding.FormatterParameterBinding.<>c_DisplayClass1.b_0(Object 型号)\r at System.Threading.Tasks.TaskHelpersExtensions.<>c_DisplayClass49.b_48()\r at System.Threading.Tasks.TaskHelpers.RunSyncly[TResult](Func'1 func, CancelToken CancelToken)"} 1
我的日期是 Web API 为"2013-01-31T16:27:18.503",并回发为"2013-01-31T05:00:00.000Z"。我可以在发送到 Web API 之前拦截有效负载,并可以使用类似 http://momentjs.com 的东西来解析它,但我该怎么办?这快把我逼疯了!
2013-01-31T16:27:18.503
是根据XML规范的XML日期。
2013-01-31T05:00:00.000Z
似乎是ISO 8601日期。
这似乎在某个地方出错了。不知道你的格式化程序,你在约会时做了什么以及它是如何变化的,就不可能说出来。
日期格式取决于您的格式化程序。如果您使用 JSON 格式化程序,这可能会有所不同。
错误消息有答案。您发布的数据没有任何问题。只需将 DataMember(IsRequired=true) 属性放在 ProductSales 的 StartDate 属性上,即可使验证满意。