不在 Razor 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>
            }

错误:

'object' does not contain a definition for 'Hubungan'

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; }
}

我建议使用 IEnumerable<MyViewModel> 作为模型,而不是使用 ViewBag,以避免在更改 query 时出现 运行 时间错误。 MyViewModel class 的定义与 中的定义相同。改变你的控制器方法如下

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>
}