我是ASP.NET的新手,但是有问题。我的模型有字段(编号,名称,姓氏,年龄...),但我只想取名称和姓氏。控制器中的查询看起来不错(我得到想要的值)。问题出现在视图中,因为我给他提供了可能错误的模型类型。
如何解决?
错误
InvalidOperationException:传递到ViewDataDictionary的模型项的类型为
'System.Collections.Generic.List'1[<>f__AnonymousType0'3[System.String,System.String,System.String]]'
,但是此ViewDataDictionary实例需要的模型项的类型为'System.Collections.Generic.IEnumerable'1[App.Models.Champion]'
控制器
var champions = _context.Champions.Select(x => new
{
x.Name,
x.Surname
}).ToList();
return View(champions);
查看
@model IEnumerable<App.Models.Champion>
@foreach (var iteam in Model)
{
@iteam.Name @iteam.Surname <br />
}
答案 0 :(得分:-1)
我已经修复了它,但是我不知道这是否是正确的考虑。
我创建了一个带有字段(名称和姓氏)的附加类,类似于视图模型。在控制器中,它将数据(我想要的)复制到新列表中,并在视图中将模型声明为新的类类型
有可能做得更好吗?
控制器
var champions = _context.Champions.Select(x => new
{
x.Name,
x.Surname,
}).ToList();
List<Models.ViewModel.Champion> cham = new List<Models.ViewModel.Champion>();
foreach (var iteam in champions)
{
cham.Add(new Models.ViewModel.Champion { Name = iteam.Name, Surname= iteam.Surname });
}
return View(cham);
查看
@model IEnumerable<App.Models.ViewModel.Champion>