Похоже, что вы знаете, что установка одинаковых имен для радиокнопок необходима для их работы. Однако, когда вы делаете это в шаблоне редактора с использованием строки кода @Html.RadioButton("SelectedItemId", Model.ItemId)
, MVC 3 будет учитывать, что вы находитесь в шаблоне редактора для Items и добавляете элементы [n].
Это создаст имя что-то вроде name="Items[0].SelectedIndex"
. Это было бы хорошо, если бы не тот факт, что следующая радиокнопка будет `name =" Items [1] .SelectedIndex ".
Один из способов решить эту проблему - не использовать шаблон редактора и использовать вместо него цикл foreach
. Вот код, который мне удалось получить работоспособным. Я подтвердил, что привязка модели работает для SelectedIndex
.
@model FormModel
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm())
{
foreach (var item in Model.Items)
{
@Html.RadioButtonFor(x => x.SelectedItemId, item.ItemId)
@item.ItemName <br/>
@Html.TextBoxFor(m => item.ItemName) <br/>
}
<input type="submit" value = "submit" />
}