Конечно, потому что loginModel
должен быть установлен в конструкторе; но MVC не будет запускать конструктор, который его устанавливает; он будет запускать конструктор по умолчанию - так что к этому моменту он будет нулевым; отсюда NullReferenceException
.
Я собираюсь предположить, что вы унаследовали этот контроллер от кого-то другого; и что они написали для него модульные тесты - отсюда и дополнительный конструктор; если, как уже упоминал Джон, на сайте активна какая-то структура DI (в этом случае она неправильно настроена).
Если существует контроллер DI, создающий контроллер, - проверьте, что он может разрешить экземпляр LoginModel
. Простой способ и хорошая практика - проверить, передается ли в этом конструкторе значение null LoginModel
, и выдать исключение (обычно ArgumentNullException
; использование контрактов кода, как упомянуто в другом ответе, является хорошим планом), а затем запустите сайт снова. Либо вы получите ту же ошибку (в этом случае, вероятно, DI не задействован), или вы получите свой ArgumentNullException
- в этом случае есть, и он плохо настроен.
Если его нет, вам нужно изменить конструктор контроллера по умолчанию, чтобы создать экземпляр по умолчанию LoginModel
- предположительно, он имеет корни в базе данных или что-то в этом роде - в конечном итоге вам нужно взглянуть на остальная часть кода проекта, чтобы понять это.