使用.net mvc 5在多对多表关系中列出数据

时间:2019-04-21 15:26:08

标签: c# asp.net-mvc entity-framework

我是Asp.Net MVC中的学生开发人员。我正在做小型.Net MVC项目,以学习它自己的知识,并且我第一次面对表之间的多对多关系。我有两个具有多对多关系usersModelgroupsModel的模型。它们由usersgroupModel以多种方式关联。在我的家庭控制器中,我尝试使用LinkQ代码列出表的内容。但是我没有。当我运行项目时,在我的Index.cshtml模型中,空值变为零。在这种情况下,我的视图向我发送了

之类的错误
  

“ System.Data.Entity.Infrastructure.DbQuery 1[<>f__AnonymousType2 2 [System.String,System.String]]”,但是此字典需要类型为“ System.Collections.Generic.IEnumerable” 1的模型项[Agm.Models.EntityFramework.Groups]'...

我该如何根据索引页面中的userId和groupId列出数据?您能帮我解决这个问题吗?从现在开始谢谢。

我的用户模型;

    public class usersModel
        {
    public int userId { get; set; }
    public string userNameSurname { get; set; }
public virtual ICollection<Groups> Groups { get; set; }
    }

我的群组模型:

 public class groupsModel
    {
 public int groupId { get; set; }
        public string groupName { get; set; }
public virtual ICollection<Users> Users { get; set; }
}

我的控制器:

public ActionResult Index()
        {   
             var userGroups = from g in db.Groups
                             from u in g.Users
                             select new
                             {
                               g.groupName,
                               g.groupImageUrl
                             };
           return View(userGroups);
        }

我的INDEX页面:

@model IEnumerable<Agm.Models.EntityFramework.Groups>

<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.groupName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.groupImageUrl)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.groupName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.groupImageUrl)
        </td>
    </tr>
}

</table>

1 个答案:

答案 0 :(得分:2)

创建这样的viewmodel:

 public class UsersGroupViewModel
 {
     public string GroupName{ get; set; }
     public string GroupImageUrl{ get; set; }
 }

将您的操作更改为此:

public ActionResult Index()
        {   
             var userGroups = (from g in db.Groups
                             from u in g.Users
                             select new UsersGroupViewModel()
                             {
                                GroupName = g.groupName,
                                GroupImageUrl = g.groupImageUrl
                             }).ToList();
           return View(userGroups);
        }

并将视图模型更改为此:

@model List<UsersGroupViewModel>