Задать вопрос

Почему 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 Простой Комментировать
Решения вопроса 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 по умолчанию не подтягивает сложные объекты, то есть записи из связанных таблиц.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы