0

我正在尝试使用 ElementAt() 方法循环访问项目。在我看来,我有两个正在使用的模型:

   List<SchoolIn.ViewModels.EnrolledCourseData> courses = ViewBag.Courses;        List<SchoolIn.Models.Enrollment> dayofclass = ViewBag.classDay;

然后在 foreach 循环中我有这个:

 foreach (var course in courses.Select ((x,i)=>new{Data=x,Index=i}))
  {

     @course.Data.Title 
     if (course.Index < dayofclass.Count())
      { 

                @dayofclass.ElementAt(course.Index).classDays

      }

      if (Model.Enrollments != null)
      {

       @Html.DropDownList("searchString", Model.WeekDays.Select(s => new SelectListItem { Text = s.ToString(), Value = s.ToString() })) 
       @Html.DropDownList("searchString", Model.Enrollments.FirstOrDefault().WeekDays.Select(s => new SelectListItem { Text = s.ToString(), Value = s.ToString(), Selected = s.ToString().Equals(dayofclass.ElementAt(course.Index).classDays) })) 


      }


 }

这条线按预期工作。它在 classDays 模型的这个索引处打印字符串:@dayofclass.ElementAt(course.Index).classDays

我想要的是使用 ElementAt() 方法将这个相同的字符串放在下拉列表中。这是引发 ArgumentOutOfRange 异常的代码部分:

等于(dayofclass.ElementAt(course.Index).classDays

如果我像这样硬编码... Equals(dayofclass.ElementAt(4).classDays... 它可以工作,所以我认为必须有某种方法来获取我的 classDays 中的元素。有什么想法吗?

感谢您对此的任何帮助。

4

2 回答 2

0

你得到一个 ArgumentOutOfRangeException 因为整数参数可能比你的 dayofclass 列表/数组长度的大小长。

我想你的 Index 属性就是它通常的意思。如果是这样,您应该确认这两个列表具有相同的大小。

您的硬编码 4 值有效,因为 dayofclass 长度至少为 5。

于 2012-10-15T08:03:16.217 回答
0

在这里'我解决了它:

         String sellectedDay = dayofclass.ElementAt(course.Index).classDays; 
                   String sellectedDay = dayofclass.ElementAt(course.Index).classDays; <!---sets the element to a local variable to be used by the dropdown list--->

         selectedday = sellectedDay;
于 2012-10-28T07:08:50.237 回答