0

我正在尝试通过 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>
}

如果我.Matchesforeach它的工作原理中删除。Matches不显示在智能感知中。

4

2 回答 2

5

您的模型是IEnumerable<sportingbiz.Models.ViewModels.MatchesViewModel>一系列 MatchesViewModels。您需要先枚举该列表,然后才能调用Matches. 如果您只返回一个 MatchesViewModel,请将您的模型声明更改为:

@model sportingbiz.Models.ViewModels.MatchesViewModel

编辑- 我经常使用的一个技巧是将鼠标悬停在任何实例上Model,VS 会告诉你模型是什么类型。

于 2012-08-30T03:16:59.983 回答
1

IEnumerable 不包含名为 Matches 的方法。所以很自然地,试图引用它是行不通的。

这就像拿一袋薯片并试图通过抓住袋子而不是伸手去拿薯片。

我认为您不想将视图模型的 IEnumerable 传递给视图。我认为您只想传递视图模型本身。

于 2012-08-30T03:24:25.853 回答