我试图通过ViewModel将一些列表传递给我的视图。我已多次重建我的项目无济于事。我在网上查了一下,与我的做法没什么不同。
namespace sportingbiz.Models.ViewModels
{
public class MatchesViewModel
{
private List<MatchViewModel> _matches = new List<MatchViewModel>();
public List<MatchViewModel> Matches
{
get { return _matches; }
set { _matches = value; }
}
}
}
标记
@model IEnumerable<sportingbiz.Models.ViewModels.MatchesViewModel>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<table style="width:100%">
@foreach (var item in Model.Matches)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Team1Name)
</td>
</tr>
}
如果我从其.Matches
移除了foreach
,那么Matches
就无法在智能感知中显示。
答案 0 :(得分:5)
您的模型是IEnumerable<sportingbiz.Models.ViewModels.MatchesViewModel>
,它是一系列MatchesViewModels。您需要首先枚举该列表,然后才能调用Matches
。如果您只返回一个MatchesViewModel,请将模型声明更改为:
@model sportingbiz.Models.ViewModels.MatchesViewModel
修改 - 我经常使用的一个技巧是将鼠标悬停在Model
的任何实例上,VS会告诉您该模型的类型。< / p>
答案 1 :(得分:1)
IEnumerable不包含名为Matches的方法。所以很自然地,试图引用它是行不通的。
这就像拿一袋薯片一样,抓住袋子,而不是伸手去拿袋子。“
我认为您不希望将视图模型的IEnumerable传递给视图。我想你只想传递视图模型。