Установите имя ваших флажков на что-то вроде "MyObject [" + index + "] .Checked", и для каждого флажка также поместите скрытое поле ввода с именем, например, "MyObject [" + index + "] .Name" со значением, установленным на t.Name.
Если вы называете свои поля так, связыватель модели по умолчанию может взять значения вашей формы и сопоставить их со списком объектов со свойством Name и свойством Checked.
Я бы попробовал что-то вроде следующего:
<% foreach(var t in Model)
{ %>
<div>
<%= Html.Hidden("MyObject[" + index + "].Name", t.Name, new { id = "MyObject_" + index + "_Name" }) %>
<%= Html.Checkbox("MyObject[" + index + "].Checked", false, new { id = "MyObject_" + index + "_Checked" }) %>
</div><%
} %>
Я использую анонимный тип со свойством id, чтобы компоненты инфраструктуры MVC не генерировали элементы HTML с недопустимыми значениями id, но это на самом деле не нужно.
Ваше действие при обработке сообщения будет выглядеть примерно так:
[HttpPost]
ActionResult MyAction(IList<MyObject> objects)
{
foreach (MyObject obj in objects)
{
if (obj.Checked)
{
// ...
}
else
{
// ...
}
}
return View();
}