В настоящее время у меня есть контроллер с несколькими действиями, но я столкнулся с проблемой с одним действием, которое, по-видимому, требует создания экземпляра хранилища в самом действии, иначе я получаю исключение NullReferenceException во время выполнения - действиеСамо собой, похоже, не отличается от других действий в контроллере.Это то, что у меня есть до сих пор:
public class PatentController : Controller
{
IRepositoryExtension patentRepository;
public PatentController()
{
PatentRepository patentRepository = new Proj.Data.PatentRepository();
}
//Constructor for unit test project
public PatentController(IRepositoryExtension repository)
{
patentRepository = repository;
}
public ActionResult Index()
{
return View();
}
//Other actions removed for brevity
public ActionResult DetailsPartial(string id)
{
//If this PatentRepository is removed, NullReferenceException occurs
PatentRepository patentRepository = new Proj.Data.PatentRepository();
USPTOPatent usptoPatent = patentRepository.GetPatent(id);
return PartialView("DetailsPartial", usptoPatent);
}
Есть ли какая-то особая причина, по которой мне нужно создать экземпляр хранилища в действии, чтобы он работал?Это ошибка, которую я получаю, если закомментирую ее:
Ссылка на объект не установлена на экземпляр объекта.
Описание: во время выполнения текущего возникло необработанное исключениевеб-запрос.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
Ошибка источника:
Строка 155: // PatentRepositoryatentRepository = new Proj.Data.PatentRepository ();Строка 156: USPTOPatent usptoPatent =atentRepository.GetPatent (id);Строка 157:
return PartialView («DetailsPartial», usptoPatent);Строка 158:}