我是Asp.Net MVC中的学生开发人员。我正在做小型.Net MVC项目,以学习它自己的知识,并且我第一次面对表之间的多对多关系。我有两个具有多对多关系usersModel
和groupsModel
的模型。它们由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>
答案 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>