2012-05-29 5 views
45

С частичным видом Я работаю с текстовыми полями следующим образом.MVC Razor Radio Button

@model Dictionary<string, string> 
@Html.TextBox("XYZ", @Model["XYZ"]) 

Как я генерировать радиокнопки, и получить нужное значение в коллекции формы, как ДА/НЕТ True/False)? В настоящее время я получаю null для «ABC», если я выбираю любое значение для ниже.

<label>@Html.RadioButton("ABC", @Model["ABC"])Yes</label> 
    <label>@Html.RadioButton("ABC", @Model["ABC"])No</label> 

Контроллер

 public int Create(int Id, Dictionary<string, string> formValues) 
     { 
     //Something Something 
     } 
+0

Показать код метода действия, а также. –

+2

Возможный дубликат [ASP.NET MVC Да/Нет радиоустройств с сильно привязанной моделью MVC] (http://stackoverflow.com/questions/2559208/asp-net-mvc-yes-no-radio-buttons-with-strongly -bound-model-mvc) –

ответ

57

Для того, чтобы сделать это для нескольких элементов сделать что-то вроде:

foreach (var item in Model) 
{ 
    @Html.RadioButtonFor(m => m.item, "Yes") @:Yes 
    @Html.RadioButtonFor(m => m.item, "No") @:No 
} 
+1

Я вызываю все мои частичные представления, проходящие @model Словарь Мне нужен способ возврата (True, False) или (Да, Нет) для выбранных значений в переключателях. – Nanu

+1

@KirkWoll его код не будет связываться с 'Dictionary ' (как утверждает его модель). Основываясь на ответе «Да нет», bool, вероятно, лучше всего, Nullable bool, если вы не позволяете никому быть выбранным. – mattytommo

+0

@KirkWoll Проверьте мое обновленное редактирование, я изначально думал, что он просто хотел Да Нет для одного варианта, тем самым рекомендуя bool. – mattytommo

13

Я решить ту же проблему с this SO ответ.

В основном он связывает переключатель с булевым свойством сильно типизированной модели.

@Html.RadioButton("blah", !Model.blah) Yes 
@Html.RadioButton("blah", Model.blah) No 

Надеюсь, это поможет!

8
<label>@Html.RadioButton("ABC", "YES")Yes</label> 
<label>@Html.RadioButton("ABC", "NO")No</label> 
22

Просто:

<label>@Html.RadioButton("ABC", True)Yes</label> 
    <label>@Html.RadioButton("ABC", False)No</label> 

Но вы всегда должны использовать строго типизированную модель как предложены Ким.

1

Это работает для меня.

@{ var dic = new Dictionary<string, string>() { { "checked", "" } }; } 
@Html.RadioButtonFor(_ => _.BoolProperty, true, (@Model.BoolProperty)? dic: null) Yes 
@Html.RadioButtonFor(_ => _.BoolProperty, false, ([email protected])? dic: null) No 
11

Я сделал это так, как:

@Html.RadioButtonFor(model => model.Gender, "M", false)@Html.Label("Male") 
    @Html.RadioButtonFor(model => model.Gender, "F", false)@Html.Label("Female") 
1
<p>@Html.RadioButtonFor(x => x.type, "Item1")Item1</p> 
<p>@Html.RadioButtonFor(x => x.type, "Item2")Item2</p> 
<p>@Html.RadioButtonFor(x => x.type, "Item3")Item3</p> 
1
<div class="col-md-10"> 
    Male: @Html.RadioButton("Gender", "Male") 
    Female: @Html.RadioButton("Gender", "Female") 
</div>       
+0

Объясните свое решение, пожалуйста. –