mvc asp.net-mvc-2 radiobuttonfor

asp.net-mvc-2 - mvc - radiobuttonfor checked default



Cómo configurar RadioButtonFor() en ASp.net MVC 2 como comprobado por defecto (13)

¿Cómo puedo configurar RadioButtonFor () como marcado por defecto?

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

hay una salida para (Html.RadioButton) pero no para (Html.RadioButtonFor)

¿algunas ideas?


Aquí está el código para configurar el botón de radio predeterminado en verdadero

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


Debe agregar ''checked'' htmlAttribute en RadioButtonFor , si el valor del botón de radio coincide con el valor de 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 enlace a continuación: Para mostrar el grupo de botones de opción de arranque con la comprobación predeterminada. enlace de respuesta


Encontré otra opción, así que puedes usar @ Html.EditorFor () con plantillas:

Digamos que tengo esta enumeración:

public enum EmailType { Pdf, Html }

Puedo poner este código en Views / 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 puedo simplemente 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.


Este Ayudante evalúa la expresión y si es igual al valor, verifica el botón de opción y tiene los mismos parámetros que RadioButtonFor (por este motivo el nombre es diferente):

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">


Me parece mejor simplemente poner el valor predeterminado en el método constructor del modelo.

Gender = "Male";


No es muy bonito, pero si tiene que implementar muy pocos botones de opción 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)%>


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

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

^ Esto marcará el primer recuadro de radio, pero puede ver más jquery para pasar al que desea seleccionar.


Supongo que deberías tener un grupo de botones de radio. algo podría ser como

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

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


También puede agregar etiquetas que están vinculadas a sus botones de radio con la misma ID, que luego le permite al usuario hacer clic en el botón de opción o en la 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")%>


Usa la manera simple:

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


Esta pregunta sobre trata con RadioButtonListFor y la respuesta también se dirige a su pregunta. Puede establecer la propiedad seleccionada en RadioButtonListViewModel.


@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


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

o

@checked = checked

Si te gusta