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?
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.
Utilisez le moyen simple:
<%= Html.RadioButtonFor(m => m.Gender, "Male", new { Checked = "checked" })%>
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.
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">
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.
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")%>
<%: Html.RadioButtonFor(m => m.Gender, "Male", new { @checked = true } )%>
ou
@checked = checked
si tu veux
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" })
@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
Je trouve préférable de simplement mettre la valeur par défaut dans la méthode constructeur du modèle.
Gender = "Male";
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.