Я использую .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' в методе контроллера становится нулевым
Теперь в моем реальном кодеУ меня есть подклассы / свойства, идущие на несколько уровней. Если у подкласса неправильный тип, я не хочу, чтобы передавался нуль.
Есть ли способ сделать его не нулевым и сделать это свойство только нулевым? Например, в приведенном выше примере мэр станет нулевым, а не целым.