@Html.DisplayFor(ModelItem => элемент.Category.Name) не показывает название категории

#asp.net #visual-studio #model-view-controller

Вопрос:

В моем проекте есть 2 объекта; Книга — Категория.

Я хочу показать, что у всех книг есть категория. Но @Html.DisplayFor(ModelItem => элемент.Kategori.Объявление) не показывает название категории.

Он должен быть показан на локальном хосте, но не отображается. Я добавил изображение об этом. Есть ли какое-либо решение для этого?

Моя Страница Просмотра.

 {@using BenimKutuphanem.Areas.AdminPaneli.Models
@model IEnumerable<BenimKutuphanem.Entity.Kitap>


@{
 ViewBag.Title = "Kitap Listesi";
}

<p>
@Html.ActionLink("Yeni Kitap Ekle", "Create")
</p>
<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Foto)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Ad)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Yazar)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Kategori)
    </th>
    <th></th>
</tr>

@foreach (var item in Model)
{
    <tr>
        <td>
            <img src="/@Html.DisplayFor(modelItem => item.Foto)" alt="Resim" width="250"/>
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Ad)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Yazar)
        </td>
        <td>
            @Html.DisplayFor(ModelItem => item.Kategori.Ad)
        </td>

        <td>
            @Html.ActionLink("Düzenle", "Edit", new { id = item.Id }) |
            @Html.ActionLink("Detaylar", "Details", new { id = item.Id }) |
            @Html.ActionLink("Sil", "Delete", new { id = item.Id })
        </td>
    </tr>
 }

 </table>
 }
 

контроллер

 using BenimKutuphanem.Entity;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace BenimKutuphanem.Areas.AdminPaneli.Controllers
{
public class KitapController: Controller
{
    private BenimKutuphanemEntities context = new BenimKutuphanemEntities();

    // GET: AdminPaneli/Kitap/Index
    public ActionResult Index()
    {
        var kitaplar = context.Kitap.ToList();
        return View(kitaplar);
    }

    // GET: AdminPaneli/Kitap/Create
    public ActionResult Create()
    {
        List<SelectListItem> degerler = (from i in context.Kategori.ToList()
                                         select new SelectListItem
                                         {
                                             Text = i.Ad,
                                             Value = i.Id.ToString()
                                         }).ToList();
        ViewBag.dgr = degerler;

        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Kitap kitap, HttpPostedFileBase Foto)
    {
        if (ModelState.IsValid)
        {
            if (Foto.ContentLength > 0)
            {
                var image = Path.GetFileName(Foto.FileName);
                var path = Path.Combine(Server.MapPath("/Areas/AdminPaneli/Images/"), image);
                Foto.SaveAs(path);

                kitap.Foto = "Areas/AdminPaneli/Images/"   image;

                try
                {
                    context.Kitap.Add(kitap);
                    context.SaveChanges();
                    ViewBag.Bilgi = "Kitap veritabanına başarıyla kaydedildi.";
                }
                catch (Exception e)
                {
                    ViewBag.Bilgi = "Kaydetme işlemi başarısız."   e.Message;
                }
            }
        }

        List<SelectListItem> degerler = (from i in context.Kategori.ToList()
                                         select new SelectListItem
                                         {
                                             Text = i.Ad,
                                             Value = i.Id.ToString()
                                         }).ToList();
        ViewBag.dgr = degerler;

        return View();
    }

    // GET: AdminPaneli/Kitap/List
    public ActionResult List()
    {
        var kitaplar = context.Kitap.ToList();
        return View(kitaplar);
    }

    // GET: AdminPaneli/Kitap/Details
    public ActionResult Details(int id)
    {

        var kitap = context.Kitap.Find(id);
        return View(kitap);
    }

    // GET: AdminPaneli/Kitap/Edit
    public ActionResult Edit(int id)
    {
        List<SelectListItem> degerler = (from i in context.Kategori.ToList()
                                         select new SelectListItem
                                         {
                                             Text = i.Ad,
                                             Value = i.Id.ToString()
                                         }).ToList();
        ViewBag.dgr = degerler;

        var kitap = context.Kitap.Find(id);
        return View(kitap);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(int id, Kitap kitap)
    {

        List<SelectListItem> degerler = (from i in context.Kategori.ToList()
                                         select new SelectListItem
                                         {
                                             Text = i.Ad,
                                             Value = i.Id.ToString()
                                         }).ToList();
        ViewBag.dgr = degerler;

        context.Entry(kitap).State = EntityState.Modified;
        context.SaveChanges();
        return RedirectToAction("List");
    }

    // GET: AdminPaneli/Kitap/Delete
    public ActionResult Delete(int id)
    {
        var kitap = context.Kitap.Find(id);
        return View(kitap);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Delete(int id, Kitap kitap)
    {
        var _kitap = context.Kitap.Find(id);
        context.Kitap.Remove(_kitap);
        context.SaveChanges();
        return RedirectToAction("List");
    }
   }
  }
 

Выход:

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

Ответ №1:

Исправьте этот запрос

 public ActionResult List()
    {
       var kitaplar = context.Kitap.Include(i=>i.Kategori).ToList();
        return View(kitaplar);
    }
 
 

Если у вас такая же ошибка где-то еще , исправьте ее таким же образом.

Комментарии:

1. Спасибо за ваш комментарий, в какой части я должен исправить этот код?