Как всегда, я бы начал с определения модели вида:
public class MyViewModel
{
public string SelectedValue { get; set; }
public IEnumerable<SelectListItem> Values { get; set; }
}
тогда есть действие контроллера GET, которое заполнит коллекцию этой модели представления, и в соответствующем представлении я бы использовал шаблоны редактора:
@model IEnumerable<MyViewModel>
@using (Html.BeginForm())
{
<table>
<thead>
<tr>
<th>Some column name</th>
</tr>
</thead>
<tbody>
@Html.EditorForModel()
</tbody>
</table>
<input type="submit value="OK" />
}
и в соответствующем шаблоне редактора (~/Views/Shared/EditorTemplates/MyViewModel.cshtml
):
@model MyViewModel
<tr>
<td>
@Html.DropDownListFor(
x => x.SelectedValue,
new SelectList(Model.Values, "Value", "Text")
)
</td>
</tr>
и, наконец, будут опубликованы выбранные значения:
[HttpPost]
public ActionResult Index(IEnumerable<MyViewModel> model)
{
...
}