我如何 select 从多个 table 和 return 结果到视图 mvc 5
how do i select from multiple table and return the result to the view mvc 5
我正在尝试在我的索引视图中显示此查询的结果,但它正在报告错误,我已尝试对其进行调试,但没有成功,如果有人可以帮助我知道我在哪里,我将不胜感激出错了。
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);
}
您不能将匿名对象传递给视图,因为每个 属性 标记为 internal
的匿名对象和视图都在不同的命名空间中。 Here is great explanation.
使用 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
class 的实际命名空间。
在您的视图中,您可以随心所欲地处理数据 Model
属性。
我正在尝试在我的索引视图中显示此查询的结果,但它正在报告错误,我已尝试对其进行调试,但没有成功,如果有人可以帮助我知道我在哪里,我将不胜感激出错了。
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);
}
您不能将匿名对象传递给视图,因为每个 属性 标记为 internal
的匿名对象和视图都在不同的命名空间中。 Here is great explanation.
使用 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
class 的实际命名空间。
在您的视图中,您可以随心所欲地处理数据 Model
属性。