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>
}

.Matchesからを削除するforeachと動作します。Matchesインテリセンスでは表示されません。

4

2 に答える 2

5

あなたのモデルはIEnumerable<sportingbiz.Models.ViewModels.MatchesViewModel>一連の MatchesViewModels です。を呼び出す前に、まずそのリストを列挙する必要がありますMatches。MatchesViewModel を 1 つだけ返す場合は、モデル宣言を次のように変更します。

@model sportingbiz.Models.ViewModels.MatchesViewModel

編集- 私がよく使うトリックは、 のインスタンスのいずれかにカーソルを合わせると、VS がモデルのタイプModelを教えてくれることです。

于 2012-08-30T03:16:59.983 に答える
1

IEnumerable には、Matches というメソッドが含まれていません。当然、それを参照しようとしてもうまくいきません。

これは、袋の中に手を入れるのではなく、チップの袋を取り、袋をつかんでチップを取り出そうとするようなものです。

ビューモデルの IEnumerable をビューに渡したくないと思います。ビューモデル自体を渡したいだけだと思います。

于 2012-08-30T03:24:25.853 に答える