Comment pouvons-nous cocher ou décocher une case à cocher par programme en fonction de la valeur? Autrement dit, pour un utilisateur particulier si la valeur est true, la case à cocher doit être cochée, sinon, si la valeur est false, la case à cocher doit être décochée. J'ai déclaré la case de la manière suivante:
<input type="checkbox" class="checkbox">
if(condition = true)
{
@Html.CheckBoxFor(x => x.Test, new { @checked = "checked" })
}
else
{
@Html.CheckBoxFor(x => x.Test)
}
J'espère que cela t'aides :)
Si vous ne souhaitez pas utiliser @ Html.CheckBoxFor pour quelque raison que ce soit et que vous souhaitez vous y tenir
<input type="checkbox">
alors voici ce que j’ai trouvé être le meilleur moyen de le faire:
<input @(Convert.ToBoolean(Model.YourPropertyHere) == true ? "checked='checked'" : string.Empty) type="checkbox" />
Le code fourni par @Yasser ci-dessus:
checked="@(required ? "checked" : "")"
N'a pas fonctionné pour moi car il continuait à ajouter l'attribut vérifié à l'élément, et le paramètre "vérifié" = "" rendra toujours la case à cocher cochée, ce qui n'était pas la sortie souhaitée. Si vous intégrez l'instruction entière dans un bloc ainsi:
@(Convert.ToBoolean(Model.YourPropertyHere) == true ? "checked='checked'" : string.Empty)
vous obtiendrez les résultats souhaités.
Il existe un moyen plus simple d’inclure ou non l’attribut checked
si vous écrivez notre propre <input>
au lieu d’utiliser des alternatives telles que Html.CheckBoxFor
:
<input type="checkbox" checked="@isChecked">
Razor est assez intelligent pour générer automatiquement soit
<input type="checkbox" checked="checked">
ou
<input type="checkbox">
selon que isChecked
est true
ou false
. Pas besoin de déclarations if ou de code en double.
Si vous utilisez MVC et transmettez correctement les valeurs de modèle de votre contrôleur,
@Html.CheckBoxFor(model => model.checkBox1)
... est tout ce dont vous avez besoin. Html-helper utilise la logique pour déterminer s'il faut ou non insérer le code checked="checkbox"
.
Sinon, sans l'aide de HTML, vous pouvez générer dynamiquement l'attribut (d'autres l'ont expliqué), mais ne commettez pas l'erreur de penser que checked = ""
laissera la case décochée. Voir cette réponse pour une explication.
essaye ça:
<input type="radio" name="filter_favorites" value="Favorites" @(loggedIn ? "checked" : "") />
Il s’agit donc d’un simple bouton radio qui vérifie logsIn variable & si le bouton radio vrai est coché sinon.
Si vous souhaitez cocher/décocher la valeur de la case à cocher dans code-behind, vous devez inclure un identifiant et des attributs de serveur d'exécution dans votre balise de case à cocher.
<checkbox Id="chk" runat="server" class="chkbox"/>
code-behind:
if(yourcondition==true)
chk.checked = true;
else
chk.checked = false;
Si vous voulez le faire en javascript
<checkbox Id="chk" class="chkbox"/>
JS:
if(yourcondition==true)
chk.checked = true;
else
chk.checked = false;
if(condition = true)
{
@Html.CheckBoxFor(x => x.Test, new { @checked = true })
}
else
{
@Html.CheckBoxFor(x => x.Test)
}