2

ASP.NET MVC/Razorプロジェクトのオブジェクトのリストをループするforeachがあります。リストに別のオブジェクトがあるかどうかを判断するために、現在のオブジェクトのインデックスを作成するために使用しようとしています。

ループを通過するたびに、次のコードでModel.TodaySoups.IndexOf(soup)から返される値として-1が返されます。

@foreach(MenuItem soup in Model.TodaysSoups)
{
    int i = Model.TodaysSoups.IndexOf(soup); 
    string comma = i < Model.TodaysSoups.Count ? "," : "";
    <li class="soup">@soup.Name@comma </li>
}

TodaysSoupsは次のように定義されています。

public List<MenuItem> TodaysSoups 

また、暗黙的にスープを定義しようとしました。

var soup in Model.TodaysSoups

助けにはならなかった。

私の知る限り、これはうまくいくはずです。明らかに、私は間違っていました。どんな助けでもいただければ幸いです。

更新: 無視できる問題が1つでもありますが、私はこれをしばらく見つめ、考えられることは何でも試していますが、それらを手伝ってくれてありがとう。奇妙な部分は、毎回-1を取得していることです。

MenuItemの定義

 public class MenuItem
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public string Category { get; set; }
    public List<MenuOption> Options { get; set; }
    public bool IsAvailable { get; set; }
    public bool IsSpecial { get; set; }

    public MenuItem()
    {
        this.IsAvailable = true;
        this.IsSpecial = false;
        this.Options = new List<MenuOption>();
    }
}

注目に値する:私は当初EFを使用することを計画していましたが、職場ではEnterprise Library 5.0 DAABを使用しているので、それに慣れるために切り替えました。次に、コードファイルと構成ファイルでEFへのすべての参照であると信じていたものを削除しました。実際にはよく知らないため、何かを見逃した可能性が非常に高くなります。考えられる原因は?

4

2 に答える 2

5

クイックフィックス:forループを使用します。

@for(int i = 0; i < Model.TodaySoups.Count; i++)
{
    MenuItem soup = Model.TodaySoups[i];
    // now you have 'soup' and 'i'

}
于 2012-08-26T13:25:09.003 に答える
3

繰り返しますModel.TodaysSoupsが、インデックスをチェックしますModel.TodaySoups。2つの異なるコレクションのように見えます。

于 2012-08-26T13:35:08.937 に答える