#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. Спасибо за ваш комментарий, в какой части я должен исправить этот код?