Почему ParentCategory = null?

На сайте есть услуги которые разбиты по категориям
Модель категории
public class Category : EntityBase
    {
[Required]
        public Guid Id { get; set; }
        [Display(Name = "Услуги")]
        public IEnumerable<Service> Services { get; set; }
    }

Модель услуги
public class Service : EntityBase
    {
[Required]
        public Guid Id { get; set; }
        [Required]
        [Display(Name = "Название")]
        public override string H1 { get; set; }
        [Display(Name = "Категория")]
        public Category ParentCategory { get; set; }
    }

При открытии услуги во ViewBag.Categories передаются категории, которые котом отображаются на форме
public IActionResult Edit(Guid id)
        {
            var entity = id == default ? new Domain.Entities.Service() : dataManager.Services.GetServiceById(id);
            ViewBag.Categories = new SelectList(dataManager.Categories.GetCategories(), "Id", "H1", entity.ParentCategory);
            return View(entity);
        }

В представлении Edit сделана форма в которой эта модель выбирается
<form asp-area="Admin" asp-controller="Services" asp-action="Edit" method="post" enctype="multipart/form-data">
   <div>
        <label asp-for="ParentCategory"></label>
        <select asp-for="ParentCategory" asp-items="ViewBag.Categories"></select>
        <span asp-validation-for="ParentCategory"></span>
    </div>



При отправке этой формы в ParentCategory почему то возврщается null.
Подскажите как исправить?
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
Planet_93
@Planet_93
Либо напишите virtual для данного поля модели данных.
public class Service : EntityBase
    {
[Required]
        public Guid Id { get; set; }
        [Required]
        [Display(Name = "Название")]
        public override string H1 { get; set; }
        [Display(Name = "Категория")]
        public virtual Category ParentCategory { get; set; }
    }

Либо используйте Include().
dataManager.Services.GetAll().Include(x => x.ParentCategory).FirstOrDefault(x => x.Id ==id);

EntityFramefork по умолчанию не подтягивает сложные объекты, то есть записи из связанных таблиц.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы