我的ViewModel有什么问题

时间:2012-08-30 03:12:47

标签: c# asp.net-mvc razor

我试图通过ViewModel将一些列表传递给我的视图。我已多次重建我的项目无济于事。我在网上查了一下,与我的做法没什么不同。

enter image description here

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就无法在智能感知中显示。

2 个答案:

答案 0 :(得分:5)

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

@model sportingbiz.Models.ViewModels.MatchesViewModel

修改 - 我经常使用的一个技巧是将鼠标悬停在Model的任何实例上,VS会告诉您该模型的类型。< / p>

答案 1 :(得分:1)

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

这就像拿一袋薯片一样,抓住袋子,而不是伸手去拿袋子。“

我认为您不希望将视图模型的IEnumerable传递给视图。我想你只想传递视图模型。