Я предлагаю подобный подход к другим ответам , но со следующими шаблон редактора; EnumRadioButtonList.cshtml, в Views \ Shared \ EditorTemplates каталоге:
@model Enum
@foreach (var value in Enum.GetValues(Model.GetType()))
{
var id = TagBuilder.CreateSanitizedId(string.Format(
"{0}_{1}_{2}", ViewData.TemplateInfo.HtmlFieldPrefix, Model.GetType(), value));
<div>
@Html.RadioButton(string.Empty, value, value.Equals(Model), new { id })
@Html.Label(value.ToString(), new { @for = id })
</div>
}
HTML-id
каждой кнопки радио должно быть уникальным.Поэтому вышеприведенный код префикс id
с именем связанного свойства с помощью ViewData.TemplateInfo.HtmlFieldPrefix
. Это гарантирует уникальное значение id
s, если модель содержит несколько свойств, которые использовали это перечисление, и если этот шаблон редактора использовался для каждого из них.
Соответствующий label
для каждого переключателя будет правильно установлен его атрибут for
. Это означает, что пользователь может выбрать радиокнопку, щелкнув текст ярлыка, намного больший и лучший клик, чем сам переключатель.
Для MVC модель привязки, радио-кнопки будут иметь их HTML name
значение свойства устанавливается равным имущества, указанного в EditorFor
вызова (Airline
в этом сценарии).
Чтобы использовать его:
@Html.EditorFor(m => m.Airline, "EnumRadioButtonList")
Я думаю, что Ахмед имел в виду, что 'RadioButtonFor' не существуют * до * до MVC4 и о том, что он примеры обнаружил, что не использовал вспомогательный метод. –
Как бы вы добавляли метки с правильными атрибутами 'for'? –
Я не уверен, что я следую. Как правило, со списком, подобным этому, у меня только 1 ярлык наверху, выберите лучший ... –