0

ElementAt() メソッドを使用してループ内のアイテムにアクセスしようとしています。私の見解では、私が使用している 2 つのモデルがあります。

   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 例外をスローするコードの一部を次に示します。

Equals(dayofclass.ElementAt(course.Index).classDays

このようにハードコーディングすると... Equals(dayofclass.ElementAt(4).classDays... が機能するので、classDays の要素を取得する方法が必要だと考えています。何かアイデアはありますか?

これを手伝ってくれてありがとう。

4

2 に答える 2

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 に答える
0

整数引数がおそらく dayofclass リスト/配列の長さのサイズよりも長いため、ArgumentOutOfRangeException が発生しています。

あなたの Index プロパティは、それが通常意味するものだと思います。その場合、2 つのリストのサイズが同じであることを確認する必要があります。

dayofclass の長さが少なくとも 5 であるため、ハードコーディングされた 4 の値が機能しました。

于 2012-10-15T08:03:16.217 に答える