首页 > 解决方案 > @Html.DisplayFor(ModelItem => item.Category.Name) 不显示类别名称

问题描述

我的项目有 2 个实体;书 - 类别。

我想显示所有书籍都有一个类别。但是 @Html.DisplayFor(ModelItem => item.Kategori.Ad) 不显示类别名称。

它应该显示在本地主机上,但不显示。我添加了关于那个的图片。有什么解决办法吗?

我的查看页面。

{@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");
    }
   }
  }

输出:

在此处输入图像描述

标签: asp.netvisual-studiomodel-view-controller

解决方案


修复此查询

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

如果您在其他地方遇到相同的错误,也请以相同的方式修复。


推荐阅读