我如何从多个表中选择并将结果返回到视图mvc 5

时间:2015-10-29 11:52:18

标签: asp.net-mvc entity-framework-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);
    }

1 个答案:

答案 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属性中的所有内容处理数据。