我正在使用.NET 4.61,并且有一个简单的控制器方法:
为了举例,它看起来像这样:
[Route("person/{personId:int}/update")]
[HttpPut]
public HttpResponseMessage ModifyPerson(int personId, PersonVM p)
{
..
}
PersonVM定义为:
namespace ViewModels
{
public class PersonVM
{
public string Name { get; set; }
public CityVM City { get; set; }
}
public class CityVM
{
public string Name {get;set;}
public string Mayor {get;set;}
}
}
现在发出HTTP PUT请求时:
{
"Person": { Name: "Bob",
City: { Name: "Houston",
Mayor: "Hose" }
}
}
填充控制器方法中的参数“ p”。但是,如果子属性之一的类型无效,即:
{
"Person": { Name: "Bob",
City: { Name: "Houston",
Mayor: 1 } //int, expected string
}
}
控制器方法中的参数'p'变为空
现在在我的真实代码中,我的子类/属性要深入几层。如果子类的类型错误,我不希望传递null。
有什么办法只能使它不为null,而仅使该子属性为null?例如,在上面的示例中,市长将为null,而不是整个p。