Если я могу бросить свою шляпу в кольцо, я думаю, что есть более чистый способ, чем существующие ответы, чтобы повторно использовать функциональность переключателя.
Допустим, у вас есть следующее свойство в ViewModel :
Public Class ViewModel
<Display(Name:="Do you like Cats?")>
Public Property LikesCats As Boolean
End Class
Вы можете выставить это свойство с помощью повторно используемого шаблона редактора :
Сначала создайте файл Views/Shared/EditorTemplates/YesNoRadio.vbhtml
Затем добавьте следующий код в YesNoRadio.vbhtml :
@ModelType Boolean?
<fieldset>
<legend>
@Html.LabelFor(Function(model) model)
</legend>
<label>
@Html.RadioButtonFor(Function(model) model, True) Yes
</label>
<label>
@Html.RadioButtonFor(Function(model) model, False) No
</label>
</fieldset>
Вы можете вызвать редактор свойства, вручную указав имя шаблона в вашем Вид :
@Html.EditorFor(Function(model) model.LikesCats, "YesNoRadio")
Плюсы:
- Приступайте к написанию HTML в редакторе HTML вместо добавления строк в коде позади.
- Сохраняет аннотацию данных DisplayName
- Позволяет щелчкам на ярлыке переключать радиокнопку
- Наименьший возможный код для поддержки в форме (1 строка). Если что-то не так с процессом рендеринга, используйте шаблон.