我正在尝试在我的视图中显示已加入的查询结果,但我一直收到此错误:
传递到字典中的模型项是类型的 ' {System.Collections.Generic.List {1}} 2 [MvcFFL.Models.TmPlyrs,MvcFFL.Models.Player]]&#39 ;, 但是这个字典需要一个类型的模型项 ' System.Collections.Generic.IEnumerable`1 [MvcFFL.Models.TmPlyrs]'
这是从控制器返回的查询:
1[<>f__AnonymousType4
现在,我的视图将如何查看数据:
var z = (from y in db.Teamplayers
join p in db.Players on y.playerid equals p.Nid
select new { y, p }).ToList();
return View(z);
如何让它在没有错误的情况下返回结果?
答案 0 :(得分:2)
由于视图仅绑定到一个Model类,因此无法将两个模型对象传递给视图,因此您需要创建一个View Model类,该类将具有两个类的属性。
假设您的模型是这样的:
public class TeamPlayers
{
public int Id {get;set;}
public int Name {get;set;}
public int Nid {get;set;}
..........................
..........................
}
public class Player
{
public int PlayerId {get;set;}
public int PlayerName {get;set;}
................................
................................
}
在项目中创建一个名为 ViewModels 的文件夹,并创建一个具有两种模型属性的ViewModel:
public class TeamPlayersViewModel
{
public int Id {get;set;}
public string Name {get;set;}
public int Nid {get;set;}
public int PlayerIdId {get;set;}
public string PlayerName {get;set;}
...................................
...................................
}
现在你的linq查询:
var z = (from y in db.Teamplayers
join p in db.Players on y.playerid equals p.Nid
select new TeamPlayersViewModel{
Id= y.Id,
PlayerName = p.PlayerName,
..........................
.......................... }).ToList<TeamPlayersViewModel>();
现在在您的视图中更改模型:
@model List<MvcFFL.ViewModels.TeamPlayersViewModel>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
答案 1 :(得分:0)
首先创建一个新模型
class MyModel{
Teamplayers team{get; set;}
Players players{get; set;}
}
在视图中将模型类型设置为MyModel
然后
var z = (from y in db.Teamplayers
join p in db.Players on y.playerid equals p.Nid
select new MyModel { team=y, players=p }).ToList();
return View(z);