我有一个接受派生类的WebApi Controller方法:
//Controller Method
public IHttpActionResult Test(DerivedClass m)
{
return Ok(true);
}
//base class
public class BaseClass
{
public int Id{ get; set; }
}
//derived class
public class DerivedClass : BaseClass
{
public new int? Id { get; set; }
}
我发布了Id = 1
如果我使用JSON数据类型POST到此控制器方法它工作正常(我得到一个Id = 1的对象),但如果我发送x-www-form-urlencoded数据,那么该对象为空。
现在,如果我将控制器方法更改为接受BaseClass并使用x-www-form-urlencoded数据,则该对象不为null(Id = 1)。另外,如果我修改Derived类并删除新的int?它的工作也很好。
这让我相信Json.Net没有将x-www-form-urlencoded数据反序列化为隐藏派生类属性的对象存在问题。有关如何解决的任何建议吗?
答案 0 :(得分:0)
要考虑的一件事是,nullable int属性将具有与不可为空的不同的签名,因此如果您的意图可能实际上没有覆盖该属性。