我有一个接受派生类的WebAPI控制器方法:
//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数据类型发布到此控制器方法,则可以正常工作(我得到一个具有ID = 1的对象),但是如果我发送X-WWW-Form-urlCormeded数据,则该对象为null。
现在,如果我更改了接受基本的控制器方法并使用x-www-form-urlencoded数据,则该对象不是null(id = 1)。另外,如果我修改派生类并删除新的INT?属性也很好。
这使我相信JSON.NET不会对隐藏派生的类属性的对象进行X-WWW-Form-rencoded数据的疑问。关于如何解决的任何建议?
要考虑的一件事是,无效的int属性将与不可删除的签名不同,因此,如果这是您的意图,您可能不会实际上覆盖该属性。