Asp.net web api ASP.NET WebApi modelbinding到包含DateTime的复杂类型

Asp.net web api ASP.NET WebApi modelbinding到包含DateTime的复杂类型,asp.net-web-api,Asp.net Web Api,这个问题涉及MVC4中的ASP.NETWebAPI,而不是ASP.NETMVC 考虑以下WebApi模型 public class MyComplex { public DateTime? Date { get; set; } } 由模型绑定作为参数绑定到以下ApiController方法 public class MyController : ApiController { [HttpPost] public HttpResponseMessag

这个问题涉及MVC4中的ASP.NETWebAPI,而不是ASP.NETMVC

考虑以下WebApi模型

  public class MyComplex 
  {
        public DateTime? Date { get; set; }
  }
由模型绑定作为参数绑定到以下ApiController方法

public class MyController : ApiController
{
    [HttpPost]
    public HttpResponseMessage PostMyComplex(MyComplex id){ .. }
}
如何声明MyComplex.Date的模型绑定器应使用的格式?在我看来,WebApi中的Modelbinders在参数本身为DateTime类型时起作用,但我还没有看到处理日期格式的好方法,因为它们是复杂类型的一部分,我想限制api可以接受的内容。我一直在尝试使用ModelBinder和ValueProvider,这两种方法似乎都不合适


我想明确限制dd MM yyyy格式上可接受的HTTPPOST。

您支持哪些内容类型。Json、Xml、表单url编码。。。所有这些?每种内容类型都需要一种不同的方法。Json和XML都应该得到支持,作为WebApi的即时可用功能。关于支持每个案例的不同方法。您在考虑[FromUrl]、[FromBody]和[ModelBinder(typeof(MySpecificModelBinder)]?如果您在正文中发布MyComplex,那么WebApi将不使用ModelBinder,而是使用MediaTypeFormatter。对于Json,它将使用Json媒体类型格式化程序,对于xml,它将使用xml媒体类型格式化程序。要自定义模型的反序列化和验证,您需要查看Json.net设置和数据协定XML.ettings似乎更容易生成MyComplex.Date类型的字符串,并将其解析为DateTime服务器端。