我试图在我的索引视图中显示此查询的结果,但它报告错误,我试图调试它,没有成功,如果有人可以协助让我知道我哪里出错了,我将不胜感激
public ActionResult Index()
{
var users =
(from u in db.Users
join s in db.States
on u.StateId
equals s.StateId
join l in db.Lgas
on u.LgaId
equals l.LgaId
select new
{
u.Surname,
u.Firstname,
u.Othernames,
u.Email,
s.StateName,
l.LgaName
}).ToList();
return View(users);
}
答案 0 :(得分:0)
您无法将anonymouse对象传递给View因为标记为internal
的匿名对象的每个属性,并且视图位于不同的命名空间中。 Here is great explanation
使用ViewModel - 它是最佳解决方案。
ViewModel示例:
public class UserViewModel
{
public string Surname { get; set; }
public string Firstname { get; set; }
public string Othernames { get; set; }
public string Email { get; set; }
public string StateName { get; set; }
public string LgaName { get; set; }
}
你的控制器:
public ActionResult Index()
{
var users =
(from u in db.Users
join s in db.States
on u.StateId
equals s.StateId
join l in db.Lgas
on u.LgaId
equals l.LgaId
select new UserViewModel
{
Surname = u.Surname,
Firstname = u.Firstname,
Othernames = u.Othernames,
Email = u.Email,
StateName = s.StateName,
LgaName = l.LgaName
}).ToList();
return View(users);
}
在你的观点开头:
@model List<YourViewModelNamespase.UserViewModel>
将YourViewModelNamespase
更改为UserViewModel
类的实际命名空间。
在您的视图中,您可以使用Model
属性中的所有内容处理数据。