Модель ввода будет иметь нулевое значение в контроллере, если InputModel не соответствует фактическим параметрам, переданным ему.
Для ясности: контроллеру все равно, если ему переданы дополнительные параметры, он будет просто игнорируйте их.
Но если есть «обязательный» параметр, такой как:
public int TypeId{get;set;}
, и это не предусмотрено, тогда вся входная модель будет нулевой.
Если TypeId действительно необязателен, то сделать его обнуляемым, а затем модель ввода просто установит для него значение null.
public int? TypeId{get;set;}
Подводя итог: контроллеру было передано нулевое значение для InputModel для который InputModel не позволяет null. В результате вся inputModel при обработке будет иметь значение null.
Это может быть неприятно, поскольку не выдается исключение, все, что вы получаете, это нулевая модель.
Исправление заключается в сравнении опубликуйте параметры в браузере вместе с моделью и найдите, какие параметры являются нулевыми, которых не должно быть. Это случается со мной гораздо чаще, чем я хотел бы признать, и каждый раз мне приходится останавливаться и снова разбираться в этом, поэтому я подумал, что буду go вперед и отправлю это здесь, чтобы напомнить себе в следующий раз.