簡體   English   中英

在剃刀MVC 5 ASP.Net中不顯示數據

[英]Not show data in razor mvc 5 ASP.Net

var query = from c in db.TblKaryawans
                    join o in db.TblKaryawanKeluargas on c.IDKaryawan equals o.IDKaryawan
                    select new { c.Nama, o.Hubungan};

        ViewBag.karyawan = query;
        return View();

視圖

 @foreach (var item in ViewBag.karyawan)
            {
                <li>@item.Hubungan</li>
            }

錯誤:

“對象”不包含“ Hubungan”的定義

ViewBag是動態的,因此視圖對其枚舉的集合類型ViewBag ,因此不會出現此錯誤。 最好的方法是創建一個ViewModel並使用它代替anonymous types ,如下所示:

var query = from c in db.TblKaryawans
                    join o in db.TblKaryawanKeluargas on c.IDKaryawan equals o.IDKaryawan
                    select new MyViewModel { Nama = c.Nama, Hubungan =  o.Hubungan};
ViewBag.karyawan = query;

然后,您可以在視圖中像這樣使用它:

@foreach (var item in (IEnumerable<MyViewModel>)ViewBag.karyawan)
{
      <li>@item.Hubungan</li>
}

MyViewModel看起來像這樣:

public class MyViewModel 
{
    public string Nama { get; set; }
    public string Hubungan { get; set; }
}

建議不要使用ViewBag ,而建議使用IEnumerable<MyViewModel>作為模型,以避免更改query時出現運行時錯誤。 的定義MyViewModel類將是相同@拉胡爾的回答 如下更改控制器方法

var query = from c in db.TblKaryawans
                    join o in db.TblKaryawanKeluargas on c.IDKaryawan equals o.IDKaryawan
                    select new MyViewModel { Nama = c.Nama, Hubungan =  o.Hubungan};

return View(query);

然后確保您的視圖頂部有此語法

@model IEnumerable<MyViewModel>

並如下遍歷模型

@foreach (var item in Model)
{
    <li>@item.Hubungan</li>
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM