以下のコードは、インストラクターがこのチュートリアルの編集ビューから取得したものです: http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/updating-related-data-with-the-エンティティ フレームワーク-in-asp-net-mvc-アプリケーション
<div class="editor-field">
<table style="width: 100%">
<tr>
@{
int cnt = 0;
List<ContosoUniversity.ViewModels.AssignedCourseData> courses = ViewBag.Courses;
foreach (var course in courses) {
if (cnt++ % 3 == 0) {
@: </tr> <tr>
}
@: <td>
<input type="checkbox"
name="selectedCourses"
value="@course.CourseID"
@(Html.Raw(course.Assigned ? "checked=\"checked\"" : "")) />
@course.CourseID @: @course.Title
@:</td>
}
@: </tr>
}
</table>
</div>
このコードは、以下のコース チェックボックスをレンダリングします。
ヘルパー メソッドとエディター テンプレートを使用して同じ結果を達成する方がはるかにエレガントですよね? 例えば:
意見
<div class="editor-field">
<table style="width: 100%">
@Html.EditorFor(model => model.courses)
</table>
</div>
エディタ テンプレート
@model AssignedCourseData
@using ContosoUniversity.ViewModels
<tr>
<td>
@Html.HiddenFor(model => model.CourseID)
@Html.CheckBoxFor(model => model.Assigned)
@Html.DisplayFor(model => model.CourseName)
</td>
</tr>
ただし、これはチェックボックスを 3 列のテーブルとしてレンダリングしません。誰でもその方法をアドバイスできますか?