2010-04-08 9 views

Respuesta

10

This question on StackOverflow se ocupa de RadioButtonListFor y la respuesta a su pregunta también. Puede establecer la propiedad seleccionada en RadioButtonListViewModel.

14

Supongo que debe tener un grupo de botones de opción. algo que podría ser como

<%=Html.RadioButtonFor(m => m.Gender,"Male")%> 
<%=Html.RadioButtonFor(m => m.Gender,"Female")%> 
<%=Html.RadioButtonFor(m => m.Gender,"Unknown")%> 

le puede dar el valor predeterminado para m.Gender = "Desconocido" (o algo así) de su controlador.

+0

pero quiero sólo dos botón de radio con una de ellas marcada pordefecto usando Html.RadiobuttonFor() – coolguy97

+4

Luché con esto también, pero consideran que esta respuesta es tan sencillo. Si crea una propiedad en su modelo, digamos Género, en el constructor predeterminado de su modelo, simplemente establezca esa propiedad en el género predeterminado, como 'Gender = 'Male';'. Si hace esto, mvc.net seleccionará automáticamente el valor predeterminado y en la devolución de datos vinculará automáticamente el valor seleccionado a su propiedad Género. – farcrats

0

Si está utilizando jquery, puede llamar a este derecho antes de sus botones de opción.

$('input:radio:first').attr('checked', true); 

^esto buscará en el primer cuadro de radio, pero se puede ver en más de jQuery para recorrer a la que desea seleccionado.

12

No es demasiado bonita, pero si usted tiene que poner en práctica muy pocos botones de radio para todo el sitio, algo como esto también podría ser una opción:

<%=Html.RadioButtonFor(m => m.Gender,"Male",Model.Gender=="Male" ? new { @checked = "checked" } : null)%>

+0

Gracias, Esto funciona perfecto –

68

Usar la forma más sencilla:

<%= Html.RadioButtonFor(m => m.Gender, "Male", new { Checked = "checked" })%> 
+17

¡Gracias! También puede ser 'nuevo {@checked =" checked "}'. – Cymen

+0

Esto no va a funcionar con las devoluciones de validación –

5

este ayudante evalúa la expresión y si es igual al valor que comprueba el botón de radio, y tiene los mismos parámetros que RadioButtonFor (por eso el nombre es diferent):

public static MvcHtmlString CheckedRadioButtonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object value) 
{ 
    return CheckedRadioButtonFor(htmlHelper, expression, value, null); 
} 

public static MvcHtmlString CheckedRadioButtonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object value, object htmlAttributes) 
{ 
    var func = expression.Compile(); 
    var attributes = new RouteValueDictionary(htmlAttributes); 
    if ((object)func(htmlHelper.ViewData.Model) == value) { 
     attributes["checked"] = "checked"; 
    } 
    return htmlHelper.RadioButtonFor(expression, value, attributes); 
} 

Uso:

<%= Html.CheckedRadioButtonFor(m => m.Gender, "Male", new { id = "gender-male" })%> 

Resultado:

<!-- For Model.Gender = "Male" --> 
<input checked="checked" id="gender-male" name="Gender" type="radio" value="Male"> 
<!-- For Model.Gender = "Female" --> 
<input id="gender-male" name="Gender" type="radio" value="Male"> 
2

También puede agregar etiquetas que están vinculados a los botones de radio con el mismo ID, que a su vez permite que el usuario haga clic en la radio botón o etiqueta para seleccionar ese elemento. Estoy usando constantes aquí para "Hombre", "Mujer" y "Desconocido", pero obviamente estas podrían ser cadenas en su modelo.

<%: Html.RadioButtonFor(m => m.Gender, "Male", 
    new Dictionary<string, object> { { "checked", "checked" }, { "id", "Male" } }) %> 
<%: Html.Label("Male") %> 

<%: Html.RadioButtonFor(m => m.Gender, "Female", 
    new Dictionary<string, object> { { "id", "Female" } }) %> 
<%: Html.Label("Female")%> 

<%: Html.RadioButtonFor(m => m.Gender, "Unknown", 
    new Dictionary<string, object> { { "id", "Unknown" } }) %> 
<%: Html.Label("Unknown")%> 
+1

¡Gracias! estaba teniendo dificultades para crear la etiqueta para la casilla de verificación. ¡Muy obvio ahora, pero no pude entenderlo! – mateuscb

1
<%: Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = true })%> 

o

@checked = checked 

si te gusta

3

encontré otra opción por lo que sólo puede utilizar @Html.EditorFor() con plantillas:

decir que tengo esta enumeración:

public enum EmailType { Pdf, Html } 

puedo poner este código en Vistas/Shared/EditorTemplates/EmailType.cshtml

@model EmailType 
@{ 
    var htmlOptions = Model == EmailType.Html ? new { @checked = "checked" } : null; 
    var pdfOptions = Model == EmailType.Pdf ? new { @checked = "checked" } : null; 
} 

@Html.RadioButtonFor(x => x, EmailType.Html, htmlOptions) @EmailType.Html.ToString() 
@Html.RadioButtonFor(x => x, EmailType.Pdf, pdfOptions) @EmailType.Pdf.ToString() 

Ahora simplemente puede usar esto si quiero usarlo en cualquier momento:

@Html.EditorFor(x => x.EmailType) 

Es mucho más universal de esta manera, y más fácil de cambiar lo siento.

0
  @Html.RadioButton("Insured.GenderType", 1, (Model.Insured.GenderType == 1)) 
      @Web.Mvc.Claims.Resources.PartyResource.MaleLabel 
      @Html.RadioButton("Insured.GenderType", 2, Model.Insured.GenderType == 2) 
      @Web.Mvc.Claims.Resources.PartyResource.FemaleLabel 
0

Aquí es código para establecer botón de opción por defecto establece en true

@Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = "checked", id = "rdGender", name = "rbGender" }) 
0

Me parece que lo mejor sólo hay que poner el valor predeterminado en el método constructor del modelo.

Gender = "Male"; 
-1

es necesario agregar 'marcado' en htmlAttribute RadioButtonFor, si el valor del botón de radio coincide con el valor Model.Gender.

@{ 
     foreach (var item in Model.GenderList) 
     { 
      <div class="btn-group" role="group"> 
       <label class="btn btn-default"> 
        @Html.RadioButtonFor(m => m.Gender, item.Key, (int)Model.Gender==item.Key ? new { @checked = "checked" } : null) 
        @item.Value 
       </label> 
      </div> 
     } 
    } 

Para ver el código completo, consulte el siguiente enlace: Para mostrar el grupo de botones de opción de arranque con la comprobación predeterminada. stackoverflow answer link

Cuestiones relacionadas