2012-05-29 38 views
45

En la vista parcial Trabajo con cuadros de texto como este.MVC Razor Botón de radio

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

¿Cómo puedo generar botones de radio, y obtener el valor deseado en la colección de forma que SI/NO Verdadero/Falso)? Actualmente estoy obteniendo nulo para "ABC" si selecciono cualquier valor para el siguiente.

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

controlador

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

Muestre su código de método de acción también. –

+2

posible duplicado de [ASP.NET MVC sí/no botones de radio con modelo fuertemente enlazado MVC] (http://stackoverflow.com/questions/2559208/asp-net-mvc-yes-no-radio-buttons-with-strongly -bound-model-mvc) –

Respuesta

57

Con el fin de hacer esto por varios elementos, hacer algo como:

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

Llamo a todas mis vistas parciales pasando @model Dictionary Necesito una forma de devolver (True, False) o (Sí, No) para los valores seleccionados en los botones de opción. – Nanu

+1

@KirkWoll su código no se uniría a un 'Diccionario ' (como indica su modelo). Basado en una respuesta Sí No, un bool es probablemente el mejor, un bool Nullable si no permite que ninguno sea seleccionado. – mattytommo

+0

@KirkWoll Revise mi edición actualizada, originalmente pensé que solo quería una opción Sí No por una opción, recomendando así un bool. – mattytommo

13

que resuelve el mismo problema con this SO responder.

Básicamente vincula el botón de opción a una propiedad booleana de un modelo fuertemente tipado.

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

Hope it helps!

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

Simplemente:

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

pero siempre se debe utilizar el modelo inflexible de tipos según lo sugerido por cacho.

1

Esto funciona para mí.

@{ 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

he hecho esto de una manera como:

@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

Explique su solución, por favor. –