.NET MVC Controller Параметр становится нулевым, если свойство sub имеет недопустимый тип, как я могу игнорировать тип sub properties? - PullRequest
0 голосов
/ 20 октября 2019

Я использую .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' в методе контроллера становится нулевым

Теперь в моем реальном кодеУ меня есть подклассы / свойства, идущие на несколько уровней. Если у подкласса неправильный тип, я не хочу, чтобы передавался нуль.

Есть ли способ сделать его не нулевым и сделать это свойство только нулевым? Например, в приведенном выше примере мэр станет нулевым, а не целым.

...