ForEach循环中的索引超出范围

时间:2016-04-28 15:04:49

标签: c# asp.net-mvc ebay-api

我对foreach循环如何使索引超出范围感到困惑。 我正在使用ebay api获取项目列表。 我可以在Visual Studio中使用QuickWatch验证该集合包含200个项目。

我搜索了重复的问题,但没有一个与我的情况相符。

我的代码检索项目列表:

public ItemTypeCollection GetMyActiveItems()
{
    GetMyeBaySellingCall myEbaySelling = new    GetMyeBaySellingCall(ApiContext);

    myEbaySelling.ActiveList = new ItemListCustomizationType();
    myEbaySelling.ActiveList.Sort = ItemSortTypeCodeType.ItemID;
    myEbaySelling.UnsoldList = new ItemListCustomizationType();
    myEbaySelling.UnsoldList.Sort = ItemSortTypeCodeType.ItemID;
    myEbaySelling.SoldList = new ItemListCustomizationType();
    myEbaySelling.SoldList.Sort = ItemSortTypeCodeType.ItemID;

    myEbaySelling.Execute();
    var items = myEbaySelling.ActiveListReturn.ItemArray;
    //checking collection here. I can iterate this just fine. 
    // with no errors. 
    foreach (ItemType item in items)
    {
        var x = item.Title;
    }
    return items; 
}

然后在Controller上,我只是返回将模型传递给View:

public ActionResult Items()
{
    ItemTypeCollection items = service.GetMyActiveItems();
    return View(items);
}

然后在视图中,我只是迭代项目以输出到浏览器:

@using eBay.Service.Core.Soap;

@model ItemTypeCollection


@foreach (ItemType item in Model)
{ // This is where the debugger stops on the first item with Index out of range exception. 
    <div class="col-sm-6 col-md-4">
        <div class="thumbnail">
        <h4 class="text-center"><span class="label label-info"></span></h4>
        <img src="@item.PictureDetails.PictureURL[0]" class="img-responsive">
         <div class="caption">
            <div class="row">
                <div class="col-md-6 col-xs-6">
                    <h3>@item.Title</h3>
                </div>
                <div class="col-md-6 col-xs-6 price">
                    <h3>
                        <label>@item.BuyItNowPrice.Value.ToString()</label>
                    </h3>
                </div>
            </div>
            <p>@item.SubTitle</p>
        </div>
    </div>
</div>
}

2 个答案:

答案 0 :(得分:0)

我认为您要检查以确保图片详细信息存在并且有图片网址

@if(item != null && item.PictureDetails != null && item.PictureDetails.PictureURL.Any())
{
   <img src="@item.PictureDetails.PictureURL.FirstOrDefault()" class="img-responsive">
} 

答案 1 :(得分:-1)

var items看起来像一个多维数组,尝试使用基于实际项目数的简单for循环。

Foreach会在多维数组中查找每个元素,包括那些没有title属性的元素。