2

我有一个 foreach 循环遍历 ASP.NET MVC/Razor 项目中的对象列表。我正在尝试使用当前对象的索引来确定列表中是否还有另一个对象。

每次通过循环,我都会得到 -1 作为以下代码中 Model.TodaySoups.IndexOf(soup) 返回的值:

@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。

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. 看起来像两个不同的集合。

于 2012-08-26T13:35:08.937 回答