ASP.NET Core MVC ID'ye Göre Sınıf Adı Nasıl Çekilir?

453476

Megapat
Katılım
1 Aralık 2020
Mesajlar
8.177
Makaleler
1
Çözümler
62
Kolay gelsin.

Veritabanında şöyle bir yapım var:

Ekran görüntüsü 2022-08-04 220836.jpg
Ekran görüntüsü 2022-08-04 220818.jpg


Ve web sitede şöyle bir görüntü oluşturdum:

Ekran görüntüsü 2022-08-04 220924.jpg



Veritabanındaki ClassId'ye göre diğer tablodaki Id değerine eşit ClassName'i getirmek istiyorum. Mesela ikinci değerdeki, Student Class'ı 2002 olandan A çıktısı almak istiyorum. Nasıl yapabilirim bunu?

Kodlarım:

Verileri listelemek için:

- Controller:


C#:
StudentDatabaseContext db = new StudentDatabaseContext();
public IActionResult Index()
{
    var studentList = db.StudentTables.ToList();
    return View(studentList);
}

- Index.cshtml:

HTML:
@using StudentApp.Models.Entity
@model List<StudentTable>
@{
    ViewData["Title"] = "Manage Student";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<br />
<h1>Manage Student</h1>
<br />
<table class="table table-bordered">
    <tr>
        <th>
            Student ID
        </th>
        <th>
            Student Name
        </th>
        <th>
            Student Class
        </th>
        <th>
            Delete
        </th>
        <th>
            Edit
        </th>
    </tr>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @item.Id
                </td>
                <td>
                    @item.Name
                </td>
                <td>
                    @item.ClassId @* Burası ClassId'yi getiriyor. Ben Name'i getirmesini istiyorum.*@
                </td>
                <td>
                    <a href="/StudentTable/Delete/@item.Id" class="btn btn-danger">Delete</a>
                </td>
                <td>
                    <a href="/StudentTable/GetStudent/@item.Id" class="btn btn-success">Edit</a>
                </td>
            </tr>
        }
    </tbody>
</table>

<a href="/StudentTable/AddStudent"  class="btn btn-primary">Add Student</a>



Ek olarak, eğitim videosunda şöyle bir kullanım var:

HTML:
                <td>
                    @item.Name
                </td>
                <td>
                    @item.Class.ClassName
                </td>
                <td>
                    <a href="/StudentTable/Delete/@item.Id" class="btn btn-danger">Delete</a>
                </td>

Bu kod onda çalışırken, bende hata veriyor. Verdiği hata ise:

Ekran görüntüsü 2022-08-04 221458.jpg


Yardımcı olursanız sevinirim, kolay gelsin.
 
Context ve hocanın kullanımından yola çıkarsak Entity Framework kullanıldığını düşünüyorum.
Entity modelinde relationship ler için prop tanımlamamışsındır. Hoca bunu tanımladığı için bu şekilde geliyor. Hocanın entity modelini tanımladığı kısmı tekrar izlemeni öneririm. Bu kısım gerçekten önemli.
Entity modeller basitçe şu şekilde olmalı idi;
C#:
public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int ClassId { get; set; }
    public Class Class { get; set; }
}

public class Class
{
    public int Id { get; set; }
    public string ClassName { get; set; }
    
    public ICollection<Student> Students { get; set; }
}
 
Context ve hocanın kullanımından yola çıkarsak entity Framework kullanıldığını düşünüyorum.
Entity modelinde relationshipler için prop tanımlamamışsındır. Hoca bunu tanımladığı için bu şekilde geliyor. Hocanın entity modelini tanımladığı kısmı tekrar izlemeni öneririm. Bu kısım gerçekten önemli.
Entity modeller basitçe şu şekilde olmalı idi;
C#:
public class Student.
{
 public int Id { get; set; }
 public string Name { get; set; }
 public int ClassId { get; set; }
 public Class Class { get; set; }
}

public class Class.
{
 public int Id { get; set; }
 public string ClassName { get; set; }

 public ICollection<Student> Students { get; set; }
}

Hocam attığınız kodlar zaten bendekilerle aynı. Ama yine de hata alıyorum.
 
Hocam attığınız kodlar zaten bendekilerle aynı. Ama yine de hata alıyorum.
Model Builder kısmında tanımlama yaptın mı peki?
Şuna benzer bir şey;
C#:
 modelBuilder.Entity<Student>()
            .WithMany(c => c.Students)
            .HasForeignKey<int>(s => s.ClassId);


DbFirst olarak geliştiriyorsan edmx deneyebilirsin.
 

Technopat Haberler

Yeni konular

Yeni mesajlar

Geri
Yukarı