的ASP.NET Web API深层模型结合(ASP.NET Web API deep model

2019-10-29 02:50发布

我注意到(甚至在网页API 2.1)只在第一个层次是深层参数类型得到填补(由模型绑定处理)。 那是 :

public class Person
{
    public string Name { get; set; }
    public PersonDetails Details { get; set; }
}

public class PersonDetails
{
    public string Address { get; set; }
    public int Age { get; set; }
}

// ...

public class PersonController : ApiController
{

    [HttpPost]
    public void ProcessPerson(Person person)
    {
        // person.Name is filled in correctly
        // person.Details.Address and person.Details.Age are not filled in correctly. That is, they have default values (null and 0)
    }
}

是否有此问题的一个简单的解决方案,除了消光了Person类,像这样?

public class PersonData
{
    public string Name { get; set; }
    public string Address { get; set; }
    public int Age { get; set; }   
}

后来编辑1:

  1. 如果我压扁Person类我正确地获取所有数据
  2. 该请求是通过岗位上做出了(而不是GET),因为我需要确保没有缓存和自投产以来改变状态时,它会是语义上不正确使用GET
文章来源: ASP.NET Web API deep model binding