Вместо написания циклов я бы порекомендовал вам использовать редактор шаблонов .Например:
@ModelTYPE List(Of xxxxxxx.attendance)
@Code
ViewData("Title") = "Class Attendance Record"
End Code
@Using Html.BeginForm
@<fieldset>
<table>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Registrant ID</th>
<th>Course Status</th>
<th>Comments</th>
</tr>
@Html.EditorForModel()
</table>
<p><input type="submit" name="submit" /></p>
</fieldset>
End Using
и внутри соответствующего шаблона редактора (~/Views/Shared/EditorTemplates/attendance.vbhtml
или ~/Views/SomeController/EditorTemplates/attendance.vbhtml
), который будет отображаться для каждого элемента коллекции:
@ModelTYPE xxxxxxx.attendance
@Html.HiddenFor(Function(m) m.id)
@<tr>
<td>
@Html.DisplayFor(Function(m) m.firstName)
@Html.HiddenFor(Function(m) m.firstName)
</td>
<td>
@Html.DisplayFor(Function(m) m.lastName)
@Html.HiddenFor(Function(m) m.lastName)
</td>
<td>
@Html.DisplayFor(Function(m) m.reg_id)
@Html.HiddenFor(Function(m) m.reg_id)
</td>
<td>
@Html.DisplayFor(Function(m) m.Completed_Class)
</td>
<td>
@Html.DropDownList("Completed_Class", New SelectList(ViewBag.courseStatus, "Status", "Status"), New With {.Completed_Class = "Completed_Class"})
@Html.HiddenFor(Function(m) m.Completed_Class)
</td>
<td>
@Html.TextBoxFor(Function(m) m.Comments, New With {.class = "AttenComment"})
@Html.HiddenFor(Function(m) m.Comments)
</td>
</tr>
При этомИспользование всех этих скрытых полей очень напоминает мне классическое WebForms ViewState.Тебе это не нужно.Поверь мне, тебе действительно не нужны эти вещи.Используйте поля ввода, если вы разрешаете пользователю что-то изменять (текстовые поля, радио, флажки и т. Д.), Но скрытые поля, давай!Единственное скрытое поле, содержащее идентификатор модели, будет в значительной степени достаточным для действия контроллера, чтобы извлечь соответствующую модель из хранилища данных, из которого она изначально извлекла ее.
Что касается раскрывающегося списка:
@Html.DropDownList("Completed_Class", New SelectList(ViewBag.courseStatus, "Status", "Status"), New With {.Completed_Class = "Completed_Class"})
Вы должны использовать свойство в вашей модели представления для привязки и использования строго типизированной версии:
@Html.DropDownListFor(Function(m) m.CompletedCLass, New SelectList(ViewBag.courseStatus, "Status", "Status"), New With {.Completed_Class = "Completed_Class"})