好吧,我做了一个Linq查询,即数据库的前5名,我可以按预期将查询发送到视图,但是当我尝试访问其字段时,它说我的“对象”没有那些参数,甚至在我看到它们到达前一个周期时,我都在图像上显示
@foreach (var item in ViewBag.TOPEMPRESASMAISPROCURADAS)
{
<tr>
<td>@item.Nome</td>
<td>@item.Numero_Estagios</td>
</tr>
}
我的控制器:
ViewBag.TOPEMPRESASMAISPROCURADAS = Empresas.Select(emp => new { emp.Nome, Numero_Estagios = Estagios
.Where(x => x.Empresa.EmpresaID == emp.EmpresaID && x.AnoLetivo == AnoLetivo).Count() })
.OrderBy(y => y.Numero_Estagios).Take(5);
好吧,正如您所看到的,foreach正在接收项目及其信息,但是我不能使用item.Nome或item.NumeroEstagios,为什么?我真的很乐意得到帮助,我是新手。谢谢
答案 0 :(得分:2)
如果要使用 Model -View-Controller模式,则实际上应该create a Model代表您希望View呈现的数据。应该避免使用ViewBag。
public class MyClass
{
public <type> Nome { get; set; }
public <type> Numero_Estagios { get; set; }
}
public class IndexVM
{
public IEnumerable<MyClass> items { get; set; }
}
然后
var model = new IndexVM
{
items = Empresas
.Select(emp => new MyClass {
Nome = emp.Nome,
Numero_Estagios = Estagios.Where(x => x.Empresa.EmpresaID == emp.EmpresaID && x.AnoLetivo == AnoLetivo).Count()
})
.OrderBy(y => y.Numero_Estagios)
.Take(5)
.ToList()
}
return View(model);
并在您看来:
@model IndeVM
@foreach (var item in Model.Items)
{
<tr>
<td>@item.Nome</td>
<td>@item.Numero_Estagios</td>
</tr>
}