Как отобразить имя фрагмента данных, который поступает из внешнего ключа в MVC

#asp.net #asp.net-mvc #asp.net-core

#asp.net #asp.net-mvc #asp.net-core

Вопрос:

Я пытаюсь заставить представление отображать имя категории вместо просто идентификатора.

Вот мой код:

Модели:

     public class Category
    {
        [Key]
        public string Cat_ID { get; set; }
        public string Cat_Name { get; set; }
    }
/////////////////////////////////////////////////////////
    public class SubCategory
    {
        [Key]
        public string SCat_ID { get; set; }
        public string SCat_Name { get; set; }
        [ForeignKey("SCat_Cat")]
        public string SCat_Cat { get; set; }
        public virtual Category Category { get; set; }
    }
  

Контроллер подкатегории (часть просмотра):

         public SubCategoriesController(ApplicationDbContext context)
        {
            _context = context;
        }
        // GET: SubCategories
        public async Task<IActionResult> Index()
        {
            return View(await _context.SubCategory.ToListAsync());
        }
  

Код, который должен отображать название категории

 @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.SCat_Name)
                @Html.DisplayFor(modelItem => item.Category.Cat_Name)

            </td>
  

Итак, я пытаюсь заставить эту часть @Html.DisplayFor(modelItem => item.Category.Cat_Name) отображать название категории. Прямо сейчас я вообще ничего не получаю.
О, и вот запись базы данных.

введите описание изображения здесь

Ответ №1:

Пришлось изменить это:

         public async Task<IActionResult> Index()
        {
            return View(await _context.SubCategory.ToListAsync());
        }
  

Для этого:

 public async Task<IActionResult> Index()
        {
            return View(await _context.SubCategory.Include(u => u.Category).ToListAsync());
        }