正确的方法发布日期的Web API? [英] Correct way to post dates to Web API?

查看:209
本文介绍了正确的方法发布日期的Web API?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我读从网页API数据和填充表单。当我提交回的Web API,我得到这个错误:

I am reading data from Web API and populate a form. When I submit it back to Web API, I get this error:

{消息:发生错误,ExceptionMessage:物业
  起始日期的类型MvcApplication1.Models.ProductSale'是无效的。
  值类型属性标记为[必填]也必须与被标记
  [数据成员(IsRequired =真)]的要求得到认可。考虑
  归因使用[DataContract]声明类型和属性
  同
  [数据成员(IsRequired =真)],ExceptionType。:System.InvalidOperationException,堆栈跟踪:
  在
  System.Web.Http.Validation.Validators.ErrorModelValidator.Validate(ModelMetadata
  元数据对象容器)\\ r \\ n在
  System.Web.Http.Validation.DefaultBodyModelValidator.ShallowValidate(ModelMetadata
  元数据,ValidationContext validationContext,对象容器)\\ r \\ n结果
  在
  System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata
  元数据,ValidationContext validationContext)\\ r \\ n在
  System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata
  元数据,ValidationContext validationContext,对象容器)\\ r \\ n结果
  在
  。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的CancellationToken)} 1

{"Message":"An error has occurred.","ExceptionMessage":"Property 'StartDate' on type 'MvcApplication1.Models.ProductSale' is invalid. Value-typed properties marked as [Required] must also be marked with [DataMember(IsRequired=true)] to be recognized as required. Consider attributing the declaring type with [DataContract] and the property with [DataMember(IsRequired=true)].","ExceptionType":"System.InvalidOperationException","StackTrace":" at System.Web.Http.Validation.Validators.ErrorModelValidator.Validate(ModelMetadata metadata, Object container)\r\n at System.Web.Http.Validation.DefaultBodyModelValidator.ShallowValidate(ModelMetadata metadata, ValidationContext validationContext, Object container)\r\n
at 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(Object model)\r\n at System.Threading.Tasks.TaskHelpersExtensions.<>c_DisplayClass49.b_48()\r\n at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)"} 1

我的日期早于网页API为2013-01-31T16:27:18.503和岗位将作为2013-01-31T05:00:00.000Z。发送给网络API之前,我可以拦截有效载荷和可以使用像 http://momentjs.com 解析它,但我该怎么办?这是推动我疯了!

My date comes Web API as "2013-01-31T16:27:18.503" and posts back as "2013-01-31T05:00:00.000Z". I can intercept the payload before sending to Web API and can use something like http://momentjs.com to parse it, but what should I do? This is driving me nuts!

推荐答案

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

2013-01-31T16:27:18.503 is an XML Date according to XML spec.

2013-01-31T05:00:00.000Z 好像是的 ISO 8601 日期。

某处这似乎是想错了。不知道你格式化,你在约会做什么,以及它如何变化很难说。

Somewhere this seems to be going wrong. Without knowing about your formatters, what you do on date and how it changes impossible to say.

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

Date format depends on your formatter. If you use a JSON formatter, this could work differently.

这篇关于正确的方法发布日期的Web API?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆