Почему при передаче модели из контроллера в представление возникает ошибка NullReferenceException в ASP .Net Core?
Хочу передать несколько моделей в представление из контроллера и использую для этого отдельный класс, который используется для хранения нескольких моделей. Он называется AllClasses:
public class AllClasses
{
public List<Adress> Adresses { get; set; }
public List<Basket> Baskets { get; set; }
public List<Executor> Executors { get; set; }
public List<Feedback> Feedbacks { get; set; }
public List<Order> Orders { get; set; }
public List<Service> Services { get; set; }
public List<User> Users { get; set; }
public List<UserData> UserDatas { get; set; }
}
Решил в своём контроллере создать объект данного класса и записать туда несколько моделей:
[HttpGet]
public IActionResult ServiceList()
{
var allClasses = new AllClasses()
{
Executors = db.Executors.ToList(),
Services = db.Services.ToList(),
Users = db.Users.ToList()
};
return View(allClasses);
}
Во View пытаюсь создать объект Services, в который передаю полученный из контроллера объект класса:
@page
@model WebSite.Models.AllClasses
@{
Layout = null;
Service service1 = Model.Services[0];
}
И тут выдаётся ошибка System.NullReferenceException: "Object reference not set to an instance of an object.". Подскажите, как это исправить? Вроде в контроллере все объекты заполняю, поэтому они не должны быть пустыми.
Ответы (1 шт):
Вы перепутали View и Razor Pages. Если вы используете обычный MVC, то деректива @page вам не нужна, т.к. с ней смысл @model меняется. В MVC она указывает на то, что у вашей View есть некая модель (данные которые вы будете отображать например), тогда как в Razor Pages это указывает на PageModel, но т.к. у вас указана не правильная PageModel, приложение разваливается.