web-dev-qa-db-fra.com

Comment définir RadioButtonFor () dans ASp.net MVC 2 comme coché par défaut

Comment puis-je définir RadioButtonFor () comme vérifié par défaut

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

il y a moyen de sortir pour (Html.RadioButton) mais pas pour (Html.RadioButtonFor)

des idées?

41
coolguy97

Cette question sur StackOverflow traite de RadioButtonListFor et la réponse répond également à votre question. Vous pouvez définir la propriété sélectionnée dans RadioButtonListViewModel.

10
Mac

Utilisez le moyen simple:

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

Je suppose que vous devriez avoir un groupe de boutons radio. quelque chose pourrait être comme

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

Vous pouvez donner la valeur par défaut pour m.Gender = "Unknown" (ou quelque chose) de votre contrôleur.

14
Allen Wang

Cet assistant évalue l'expression et, s'il est égal à la valeur, vérifie le bouton radio et a les mêmes paramètres que RadioButtonFor (pour cette raison, le nom est différent):

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);
}

Usage:

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

Résultat:

<!-- 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">
8
Alex LE

J'ai trouvé une autre option afin que vous puissiez simplement utiliser @ Html.EditorFor () avec des modèles:

Dis que j'ai cette énumération:

public enum EmailType { Pdf, Html }

Je peux mettre ce code dans 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()

Maintenant, je peux simplement l'utiliser si je veux l'utiliser à tout moment:

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

C'est beaucoup plus universel de cette façon et plus facile à changer, je pense.

3
naspinski

Vous pouvez également ajouter des étiquettes liées à vos boutons radio avec le même ID, ce qui permet ensuite à l'utilisateur de cliquer sur le bouton radio ou sur l'étiquette pour sélectionner cet élément. J'utilise des constantes ici pour "Homme", "Femme" et "Inconnu", mais il est évident que cela pourrait être une chaîne dans votre modèle.

<%: 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")%>
2
nekno
<%: Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = true } )%>

ou 

@checked = checked

si tu veux

1
Markus Sjöholm

Voici le code pour définir le bouton radio par défaut à true

@Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = "checked", id = "rdGender", name = "rbGender" })
0
Anjan Kant
           @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
Kuttan Sujith

Je trouve préférable de simplement mettre la valeur par défaut dans la méthode constructeur du modèle.

Gender = "Male";
0
dko

Si vous utilisez jQuery, vous pouvez appeler cela juste avant les boutons radio.

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

^ Ceci cochera la première case d'option, mais vous pouvez regarder plus de fois pour passer à celui que vous voulez sélectionner.

0
rrp6119