为什么我收到ArgumentOutOfRangeException

时间:2018-07-25 20:42:42

标签: c# asp.net-mvc

我正在研究ASP.Net MVC项目,但遇到了一个(看似)非常奇怪的错误。我有一个名为Lens的模型,这是它的类结构

public class Lens
{
    public int LensID { get; set; }
    public string LensName { get; set; }
}

在我的一种观点中,我有一个镜头清单(在控制器中获得)。我在以下代码段中收到ArgumentOutOfRangeException

@for (int i = 0; i < Lenses.Count; i++)
{
     <input type="text" data-LID="@Lenses[i].LensID" value="@Lenses[0].LensName" readonly id="lens @i" />
}

透镜是我从控制器获得的列表。我真的不明白为什么这段代码会引发异常。我在调试器中查看了Locals视图,发现在引发异常时,参数i的值为0,并且在Lenses的索引0处存在一个Lens对象。更陌生的是,当我使用foreach循环从完全相同的列表中提取数据时,检索对象没有问题。我也尝试过

@Lenses[0].LensID

相反,我遇到了同样的错误。另外,以防万一。根据“本地人”视图,“镜头”列表的计数为1。这是镜头的创建

List<Lens> Lenses = (List<Lens>)ViewBag.Lenses;

这是从控制器发送到视图的方式

LensQueries lQuery = new LensQueries();
ViewBag.Lenses = lQuery.GetAll();

这是LensQueries.GetAll()的参考

public List<Lens> GetAll()
    {
        List<Lens> retList;
        using (var context = new SqlDbContext())
        {
            retList = context.Lenses.SqlQuery("select *from dbo.Lens").ToList<Lens>();
        }
        return retList;
    }

1 个答案:

答案 0 :(得分:0)

找到了解决方案(有点?)。仍然不知道为什么会中断,但是当我进入参考并删除某些程序集时,问题就消失了。

对于任何好奇的人,我删除的程序集都是pd.concat([long_df, long_df2.add_suffix('_T')], 1) 程序集,以及所有的子程序集。