2017-05-22 19 views
0

を保持していない私は動的DropDownListForが選択した値


として、学生の出席のための動的DropDownListForの一切を作成して作成されていないモデル:

List<Student> studentList {get; set;} 
List<String> attendanceList {get; set;} 
List<SelectListItems> attendaceOptionsList {get; set;} //Present,absent,leave 

コントローラー:

studentList= context.students.ToList(); //return only 3 students suppose; 
attendanceList.Add("Present"); 
attendanceList.Add("Absent"); 
attendanceList.Add("Leave"); 

ビュー:

<Table> 
    <tr> 
    <th>Student name </th> 
    <th>Attendance status </th> 
    </tr> 
    @{ var i = 0; } 
    @foreach(var student in Model.studentList) 
    { 
    <tr> <td>student.Name </td> 
    <td>@Html.DropdownListFor(model=> model.attendanceList[i],Model.attendaceOptionsList, new { @class = "form-control"}) 
    </td> 
    </tr> 
    i++; 
    }` 
    </table> 

問題:それは、ドロップダウンの正しい値を選択しないのはなぜ

The dropdowns successfully created but dropdown selected value is not correct. 
i.e. 
The first dropdown selected value should be Present, 
2nd one should Absent and 
third dropdown selected value should be Leave. 
But I get every dropdown list selected value is Present? 

私は以下のようにこのための解決策を見つけましたが。私はなぜこれが適切な値を選択しないかを知る必要があります。

現在のソリューション: 私は

<script> 
var attendanceList [email protected](Json.Encode(Model.attendanceList)); 
for (var i = 0; i < attendanceList .length; i++) { 
//change the value of dropdown. 
$('#attendanceList _' + i + '_').val(attendanceList[i]); 
} 

    </script> 
+0

あなたは、ドロップダウンのためのHTMLが生成されたばかり示しすることはできますか? – User3250

答えて

0

、ページのロードにはJavaScriptを通じてドロップダウンリストの選択された値を修正したが、これを試してみてください:

Model.attendaceOptionsList.FirstOrDefault(f => f.Value == Model.attendanceList[i]).Selected = true; 

@Html.DropdownListFor(model=> model.attendanceList[i],Model.attendaceOptionsList, new { @class = "form-control"}) 
+0

私はそれぞれの生徒のために1つのドロップダウンだけをバインドすると動作します。私は各学生のためのより多くのドロップダウンをバインドする場合。 attendanceListCourseOneとattendanceListCourse2ndの1つのように。両方のドロップダウン値が同じになります。後者は常に第1の値を選択する。 –

関連する問題