¿Alguien sabe cómo vincular un botón de opción Sí / No a una propiedad booleana de un modelo fuertemente tipado en ASP.NET MVC.
Modelo
public class MyClass
{
public bool Blah { get; set; }
}
Ver
<%@ Page Title="blah" Inherits="MyClass"%>
<dd>
<%= Html.RadioButton("blah", Model.blah) %> Yes
<%= Html.RadioButton("blah", Model.blah) %> No
</dd>
Gracias
SOLUCIÓN:
Gracias por Brian por la dirección, pero fue lo contrario de lo que escribió. Como tal ...
<%@ Page Title="blah" Inherits="MyClass"%>
<dd>
<%= Html.RadioButton("blah", !Model.blah) %> Yes
<%= Html.RadioButton("blah", Model.blah) %> No
</dd>
c#
asp.net-mvc
model
radio-button
boolean
brianstewey
fuente
fuente
Respuestas:
Se selecciona el segundo parámetro, así que use el! para seleccionar el valor no cuando el booleano es falso.
fuente
Si usa MVC 3 y Razor, también puede usar lo siguiente:
fuente
Aquí hay un ejemplo más completo usando a
fieldset
por razones de accesibilidad y especificando el primer botón como predeterminado. Sin afieldset
, para qué sirven los botones de radio en su conjunto no se puede determinar mediante programación.Modelo
Ver
Puede agregar un
@checked
argumento al objeto anónimo para establecer el botón de opción como predeterminado:Tenga en cuenta que puede enlazar a una cadena reemplazando
true
yfalse
con los valores de la cadena.fuente
Basándome un poco en la respuesta de Ben, agregué atributos para la ID para poder usar etiquetas.
Espero que esto ayude.
fuente
Agregar etiquetas de etiquetas alrededor de los botones de radio usando HTML normal también solucionará el problema de 'etiqueta para':
Al hacer clic en el texto ahora se selecciona el botón de opción apropiado.
fuente
o MVC 2.0:
fuente
Si puedo arrojar mi sombrero al ring, creo que hay una forma más limpia que las respuestas existentes para reutilizar la funcionalidad del botón de radio.
Digamos que tiene la siguiente propiedad en su ViewModel :
Puede exponer esa propiedad a través de una plantilla de editor reutilizable :
Primero, crea el archivo
Views/Shared/EditorTemplates/YesNoRadio.vbhtml
Luego agregue el siguiente código a YesNoRadio.vbhtml :
Puede llamar al editor de la propiedad especificando manualmente el nombre de la plantilla en su Vista :
Pros:
fuente
Terminé empaquetando esto en un método de extensión para que (1) pudiera generar la etiqueta y la radio de una vez y (2) para no tener que preocuparme por especificar mis propios ID:
Uso:
fuente